簡體   English   中英

如何在SQL中使用WHERE語句排除組

[英]How to use WHERE statement in SQL to exclude a group

我有一個復雜的查詢,但這是我要執行的操作的本質

在這樣的表格中:

Col1 Col2  
Bill 0  
Bill 0  
Bill 0  
Bill 1  
Bill 1  
John 1  
John 1  
Jonh 1

上表有2列。 我正在嘗試查詢第2列的所有行中都具有'1'的行。由於'Bill'行具有'0'和'1',因此必須排除bill。 WHERE語句中的子查詢給出了多個結果,並且不起作用。

SELECT t1.Col1
FROM Table1 t1
WHERE t1.Col1 <> (SELECT t1.Col1 FROM Table1 t1 WHERE t1.Col2 <> '0')

在查詢中使用某種形式的循環語句會給我的項目帶來全新的頭痛,因此我希望任何聰明的人都可以幫助我完成我的任務。

有很多方法。 每個人都有其優點,這取決於您的RDBMS以及您最容易閱讀的內容。 有關性能的更多詳細信息,請參見此處 ,並檢查執行計划或進行一些測試,以獲得最適合您需求的解決方案。

SELECT  *
FROM    Table t1
WHERE   t1.Col1 NOT IN (SELECT t1.Col1 FROM Table1 t1 WHERE t1.Col2 <> '0')

要么

SELECT  t1.*
FROM    Table t1
        LEFT JOIN
        (   SELECT  Col1
            FROM    Table
            WHERE   Col2 <> '0'
        ) Exc
            ON exc.Col1 = t1.Col1
WHERE   Exc.Col1 IS NULL

要么

SELECT  *
FROM    Table t1
WHERE   NOT EXISTS
        (   SELECT  1
            FROM    Table t2
            WHERE   t2.Col2 <> '0'
            AND     t1.Col1 = t2.Col1
        )
SELECT t1.Col1 
FROM Table1 t1 
WHERE NOT EXISTS
(SELECT t2.Col1 
FROM Table1 t2
WHERE t2.col2 = 0
AND t2.col1 = t1.col1)
SELECT Col1
  FROM YourTable
 WHERE Col2 = 1
EXCEPT
SELECT Col1
  FROM YourTable
 WHERE Col2 <> 1;

嘗試:

SELECT Col1 
FROM Table1
GROUP BY Col1
HAVING COUNT(DISTINCT Col2)=1 and MAX(Col2)='1'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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