我有桌子

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-我只需要Test-HB完成超过1的那些记录。在上述情况下,输出将是前两行。 {我需要重复的行}

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

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


查询2-我只需要完全不执行Test-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');

关于mysql - 在MySQL中使用where子句获取重复记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59797319/

10-11 08:44