我有一个表来保存Sample
状态。
id sample_id previous_status current_status
1 22216 NULL 1
2 22216 1 3
3 22221 NULL 1
4 22221 1 3
我想找到在当前状态下没有条目的行为 1。
编辑(来自评论): 我想要 previous_status = 1、current status = 3 且没有 previous_status = null、current_status = 1 的示例 ID。
最佳答案
I want the sample ids which have previous_status = 1, current status = 3 AND no row with previous_status = null, current_status = 1
您可以使用相关子查询:
SELECT s1.sample_id
FROM Sample s1
WHERE previous_status = 1
AND current_status = 3
AND NOT EXISTS (SELECT 1
FROM Sample s2
WHERE s2.sample_id=s1.sample_id
AND s2.previous_status IS NULL
AND s2.current_status = 1);
使用 GROUP BY
:
SELECT sample_id
FROM Sample
GROUP BY sample_id
HAVING SUM(previous_status = 1 AND current_status = 3) > 0
AND SUM(previous_status IS NULL AND current_status = 1) = 0;
关于Mysql - 获取没有先前状态的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34673399/