admin

限制SQL JOIN

sql

我试图限制以下SQL语句。

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

我想做的是限制“父”行的数量。IE。如果我执行LIMIT 1,我将只收到一个费用项目,但仍获得与其相关的所有交易。

这将如何实现?

在此阶段,如果我执行LIMIT 1,我将获得一笔费用,并且只有一笔交易。


阅读 202

收藏
2021-05-10

共1个答案

admin

因此,假设我们可以排除用户表,则可以将其重写为:

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;

2021-05-10