我很感激以下查询提供了一些帮助..我有一张表格如下,
UID | Status | Msg_Id | Msg_Id_type 1 | START | AA | GLOBAL 2 | END | AA | GLOBAL 3 | PROC | AA | GLOBAL 4 | START | BB | GLOBAL 5 | START | CC | GLOBAL 6 | START | DD | GLOBAL 7 | END | DD | GLOBAL
我想要实现的是仅选择那些记录,对于给定的MSG_ID没有除“START”之外的任何其他状态,或者除了“START”之外没有任何其他状态的所有记录。非常感谢你的帮助。
答案 0 :(得分:0)
这个怎么样:
SELECT *
FROM my_table a
WHERE NOT EXISTS (
SELECT 1
FROM my_table b
WHERE b.status <> 'START'
AND b.msg_id = a.msg_id
)
AND a.status = 'START' -- < I think you can ignore this line.
答案 1 :(得分:0)
这可以帮到你:
SELECT msg_id
FROM TABLE
GROUP by msg_id
HAVING COUNT(CASE WHEN STATUS = 'START' THEN 1 ELSE NULL END) = 1
AND COUNT(CASE WHEN STATUS <> 'START' THEN 1 ELSE NULL END) = 0
`