我有桌子
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/