簡體   English   中英

如何選擇不同的行,其中一列可能具有許多相同的值,但所有第二列均具有相同的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM