2010-05-10 35 views
6

Tôi gặp sự cố khi viết một truy vấn và tôi thậm chí không biết nếu có thể. Lấy bảng này ví dụ:Truy vấn MySQL: Cách chọn các hàng không có giá trị nhất định?

id group active 

1 A  NO 
2 A  YES 
3 A  NO 

4 B  YES 
5 B  NO 

6 C  NO 
7 C  NO 

Bảng trên chỉ là một ví dụ. Trong bảng thực tế có nhiều cột hơn những cây đó để có trong tâm trí. Những gì tôi cần là một cách để chỉ chọn các tên nhóm không có bất kỳ hàng hoạt động nào. Trong trường hợp này cả hai nhóm "A" và "B" có ít nhất một hàng với "hoạt động" = "CÓ" nhưng nếu bạn nhìn vào C thì không có hàng đang hoạt động nào. Điều duy nhất tôi cần là kết quả là giá trị cột nhóm (trong trường hợp này là "C") không phải toàn bộ hàng.

Điều này có khả thi không?

Trả lời

7
SELECT DISTINCT group FROM table WHERE group NOT IN 
    (SELECT DISTINCT group FROM table WHERE active = 'YES') 
+0

Điều này có hiệu quả. Cảm ơn bạn. – Srka

1

Trước tiên, bạn muốn để có được tất cả các nhóm mà bạn muốn loại trừ, và sau đó sử dụng mệnh đề NOT IN trả lại tất cả các nhóm khác không có trong danh sách đó.

SELECT DISTINCT t.group 
FROM table t 
WHERE t.group NOT IN 
    (SELECT DISTINCT t.group 
    FROM table t 
    WHERE t.active='YES'); 
+0

Điều này gần giống như một trong những bài đăng được đăng bởi vì vậy tôi cho rằng nó cũng sẽ hoạt động. – Srka

Các vấn đề liên quan