【发布时间】:2019-03-28 12:22:24
【问题描述】:
这是我的表格deals_transaction_status_log,包含以下字段
id,user_id,deal_transaction_id,transaction_status_id 我想在其中获取transaction_id 上的group by 记录,最新记录为(最大id)。
此表还连接一些其他表以获取其他数据。
这是我的查询
SELECT dtsl.id ,dtsl.deal_transaction_id,dts.id as statusId
FROM deals_transaction_status_log as dtsl
JOIN deals_transactions as dt ON dt.id=dtsl.deal_transaction_id AND dt.visitor_id=140
JOIN DEALS as d ON d.idDeal=dt.deal_id
JOIN USER as u ON d.userId=u.idUser
JOIN deals_transaction_status as dts ON dts.id=dtsl.transaction_status_id
WHERE dtsl.user_id!=140 AND dtsl.transaction_status_id=14 AND dtsl.id IN (
SELECT MAX(dtsl.id)
FROM deals_transaction_status_log as dtsl
GROUP BY dtsl.deal_transaction_id
) GROUP BY dtsl.deal_transaction_id
这很好用,但是即使我有多个具有相同 deal_transaction_id 的记录,它也只返回一条记录
例如:
示例输入
id user_id deal_transaction_id transaction_status_id
1 4 2 14
2 4 2 14
3 5 3 14
4 5 3 14
结果
id statusId deal_transaction_id
3 14 3
预期结果
id statusId deal_transaction_id
2 14 2
4 14 3
更新
我刚试了fa06的答案,没有任何加入
SELECT dtsl.id,dtsl.deal_transaction_id,dtsl.transaction_status_id FROM deals_transaction_status_log as dtsl
WHERE dtsl.id IN (
SELECT MAX(id)
FROM deals_transaction_status_log as b where dtsl.transaction_status_id=b.transaction_status_id)
AND dtsl.transaction_status_id=14
GROUP BY dtsl.deal_transaction_id
但我仍然只得到一行
【问题讨论】:
-
没有任何聚合函数的 group by 不太可能有用
-
@P.Salmon 我没听懂你
-
相互的感觉,您的查询使用 5 个表,并且您为 1 个表提供了示例输入,您可以为所有表提供示例数据还是减少查询以仅使用您提供的示例数据。