我试图限制以下SQL语句。
SELECT expense.*, transaction.* FROM expense INNER JOIN transaction ON expense_id = transaction_expense_id
我想做的是限制“父”行的数量。IE。如果我执行LIMIT 1,我将只收到一个费用项目,但仍获得与其相关的所有交易。
这将如何实现?
在此阶段,如果我执行LIMIT 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;
本