我有一张桌子
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] 删除。
我来说两句