【发布时间】:2020-11-26 10:40:11
【问题描述】:
我有一个包含以下数据的表,我想跳过第 3 行,只想获取 OPEN 状态一次,我正在使用下面的查询,但它也跳过了第 5 行。
SELECT t.*
FROM emailEvent t
JOIN
( SELECT MIN(id) AS minid
FROM emailEvent WHERE email_id = 3
GROUP BY status
) AS grp
ON grp.minid = t.id
WHERE (t.email_id = 3)
我想出了这个作为解决方案,但不确定是否还有其他最佳解决方案
SELECT t.*
FROM emailEvent t
WHERE t.status != "Open" and t.email_id = 3
UNION
(
SELECT et.*
FROM emailEvent et
WHERE et.status = "Open" and et.email_id = 3
ORDER BY et.createdAt DESC LIMIT 1
)
【问题讨论】:
-
orgid 从何而来。它不在您的示例表中。
-
包括除 id t.id != 3 之外的所有内容?
-
@TomC 打错了
-
你的 MySQL 版本支持 ROW_NUMBER 吗?
-
是的,它确实支持
标签: mysql sql group-by subquery distinct