Tho*_*s R 22 sql database join sql-limit
我试图限制以下SQL语句.
SELECT expense.*, transaction.* FROM expense
INNER JOIN transaction ON expense_id = transaction_expense_id
Run Code Online (Sandbox Code Playgroud)
我想做的是限制'父'行的数量.IE浏览器.如果我做LIMIT 1,我只会收到一个费用项目,但仍会获得与之相关的所有交易.
这将如何实现?
在这个阶段,如果我做LIMIT 1,我得到一笔费用,只有一笔交易.
Ben*_*Ben 12
因此,假设我们可以排除用户表,可以将其重写为:
select * from expense, transaction where expense_id = transaction_expense_id
Run Code Online (Sandbox Code Playgroud)
现在,如果您想应用限制,您可以这样做:
select * from expense, transaction where expense_id = transaction_expense_id and
expense_id in (select expense_id from expense limit 1)
Run Code Online (Sandbox Code Playgroud)
那会做你想要的吗?显然,您需要谨慎处理您的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;
Run Code Online (Sandbox Code Playgroud)
本
您必须指定要获得的费用项目.最昂贵的?最新的?然后加入一个仅返回的子查询:
SELECT
expense.*, transaction.*, user.*
FROM
(SELECT * FROM expense WHERE ...) AS expense
INNER JOIN
transaction ON expense_id = transaction_expense_id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29154 次 |
| 最近记录: |