在Mysql中使用where子句获取重复记录

路西法

我有一张桌子

Sno|PID |Tests|Result
1   1001 HB    10
2   1001 HB    12
3   1001 TEMP  98
4   1002 TEMP  98  
5   1002 HB    120
6   1003 TEMP   98

查询 1 - 我只需要测试 - HB 完成的记录超过 1 的那些记录。在上述情况下,输出将是前两行。{我需要重复的行}

我正在尝试使用以下查询但不起作用

SELECT  PID,test_name, COUNT(MRN) AS dup
FROM `report` WHERE Tests = 'HB' GROUP BY Tests HAVING dup > 1

查询 2 - 我只需要那些根本没有完成测试 - HB 的记录。在上述情况下,输出将是最后一行。PID - 1003

谢谢

蒂姆·比格莱森

这是执行此操作的一种方法:

SELECT r1.*
FROM report r1
WHERE
    Tests = 'HB' AND
    Sno IN (SELECT Sno FROM report r2
            WHERE Tests = 'HB' GROUP BY Sno HAVING COUNT(*) > 1);

对于第二个要求,您可以尝试:

SELECT r1.*
FROM report r1
WHERE
    Tests <> 'HB' AND
    NOT EXISTS (SELECT 1 FROM report r2
                WHERE r2.PID = r1.PID AND r2.Tests = 'HB');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章