【发布时间】:2013-11-21 13:37:45
【问题描述】:
我有两张桌子:
Members:
id username
Trips:
id member_id flag_status created
("YES" or "NO")
我可以这样查询:
SELECT
Trip.id, Trip.member_id, Trip.flag_status
FROM
trips Trip
WHERE
Trip.member_id = 1711
ORDER BY
Trip.created DESC
LIMIT
3
哪个可以给出这样的结果:
id member_id flag_status
8 1711 YES
9 1711 YES
10 1711 YES
我的目标是知道该成员的最后三个行程是否都有 flag_status = "YES",如果三个中的任何一个 != "YES",那么我不希望它计算在内。
我还希望能够删除 WHERE Trip.member_id = 1711 子句,并让它为我的所有成员运行,并给我最近 3 次旅行都具有 flag_status = "YES" 的成员总数
有什么想法吗?
谢谢!
http://sqlfiddle.com/#!2/28b2d
在那个 sqlfiddle 中,当我正在寻找的正确查询运行时,我应该看到如下结果:
COUNT(Member.id)
2
应该符合条件的两个成员是成员 1 和 3。成员 5 失败了,因为他的一次行程 flag_status = "NO"
【问题讨论】:
-
在 SQLfiddle 上放置一个包含示例数据的表,还包含 multble member_ids..
-
"我的目标是知道该成员的最后三趟行程是否都有 flag_status = "YES",如果这三个中的任何一个 != "YES",那么我不希望它计算在内。 "您的意思是,MySQL 应该始终根据日期(DESC)检查最后一条记录,并在 flag_status = "Yes" 上过滤这三个记录,还是我误解了那部分..
-
member_id 是 members 表的外键,且 members 表中的 username 和 id 是唯一的。
-
所有三个都必须等于 YES 才能将该用户包含在 COUNT 中。
-
我不明白你的 cmets anwsers 是如何挖掘的......
标签: mysql duplicates limit conditional-statements rows