Mysql-获取没有先前状态的行
我有一个表来保存样本的状态Mysql-获取没有先前状态的行,mysql,sql,Mysql,Sql,我有一个表来保存样本的状态 id sample_id previous_status current_status 1 22216 NULL 1 2 22216 1 3 3 22221 NULL
id sample_id previous_status current_status
1 22216 NULL 1
2 22216 1 3
3 22221 NULL 1
4 22221 1 3
我想将当前状态中没有条目的行查找为1
编辑(来自评论):
我希望示例ID具有previous_status=1、current status=3且没有previous_status=null、current_status=1的行。尝试
Select * from Sample where previous_status =1 and current_status = 3 and previous_status IS NOT NULL and current_status <>1
从样本中选择*,其中前一个_状态=1,当前_状态=3,前一个_状态不为NULL,当前_状态为1
其中
不等于
(小伙子的小提琴)
我想要的示例ID具有previous_status=1、current status=3且没有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);
使用
分组依据
:
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;
我希望示例ID具有先前的\u状态=1,当前状态=3,并且没有先前的\u状态=null的行,当前的\u状态=1
为null或不为null
?没有先前的\u状态=null的行,current_status=1
那么根据我们的JSFIDLE,它必须是2条记录..不是吗?@debin它还可以。我正在使用相关子查询s2.sample\u id=s1.sample\u id
。因此,它是按样本id“分组”的,而不是整个表。