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“分组”的,而不是整个表。