[英]How do I use SQL/mySQL to select rows where 2 columns have multiple of the same value and 1 column has a distinct value?
[英]How do I select distinct rows where a column may have a number of the same values but all their 2nd columns have the same value?
我有一個表格形式:
test_name | test_result
-----------------------
test1 | pass
test2 | fail
test1 | pass
test1 | pass
test2 | pass
test1 | pass
test3 | pass
test3 | fail
test3 | pass
如您所見,所有test1通過,而test2和test3均通過和失敗。
是否有一條SQL語句可用於返回僅通過的測試的不同名稱? 例如test1
您可以按test_name分組,計算通過次數,然后檢查它是否與組中的行數相同。
SELECT test_name
FROM table1
GROUP BY test_name
HAVING SUM(test_result = 'pass') = COUNT(*)
或者,計算失敗次數並檢查是否為零:
SELECT test_name
FROM table1
GROUP BY test_name
HAVING SUM(test_result = 'fail') = 0
結果:
test1
測試數據:
CREATE TABLE table1 (test_name NVARCHAR(100) NOT NULL, test_result NVARCHAR(100) NOT NULL);
INSERT INTO table1 (test_name, test_result) VALUES
('test1', 'pass'),
('test2', 'fail'),
('test1', 'pass'),
('test1', 'pass'),
('test2', 'pass'),
('test1', 'pass'),
('test3', 'pass'),
('test3', 'fail'),
('test3', 'pass');
這可能不是最簡單的方法(我傾向於濫用子查詢),但是您可以這樣做:
SELECT test_name FROM tests AS a WHERE NOT EXISTS (SELECT test_name FROM tests AS b WHERE a.test_name = b.test_name AND test_result != 'pass') GROUP BY test_name;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.