MySQL で JOIN クエリの返される結果を制限する方法 [重複] 質問する

MySQL で JOIN クエリの返される結果を制限する方法 [重複] 質問する

次の SQL ステートメントを制限しようとしています。

SELECT expense.*, transaction.* FROM expense
INNER JOIN transaction ON expense_id = transaction_expense_id

私がやりたいのは、「親」行の数を制限することです。つまり、LIMIT 1 を実行すると、経費項目は 1 つだけ受け取りますが、それに関連付けられたすべての取引は取得されます。

これはどのように実現できるでしょうか?私はMySQL 5.0を使用しています

この段階で、LIMIT 1 を実行すると、費用は 1 つ、取引は 1 つだけになります。

ベストアンサー1

したがって、ユーザー テーブルを除外できると仮定すると、次のように書き直すことができます。

select * from expense, transaction where expense_id = transaction_expense_id

制限を適用したい場合は、次のようにします。

select * from expense, transaction where expense_id = transaction_expense_id and 
  expense_id in (select expense_id from expense limit 1)

それはあなたが望んでいることを実行しますか? 明らかに、expense_ids がどのような順序で返されるかについては注意する必要があるので、おそらく ORDER BY を使用する必要があるでしょう。

編集: 以下のコメントに記載されている MySQL の制限を考慮すると、おそらくこれが機能するでしょう:

select * from (select id from expense order by WHATEVER limit 1) as t1, transaction where expense_id=transaction_expense_id;

ベン

おすすめ記事