如何在sql select中排除具有特定值的记录

Mis*_*aak 16 sql t-sql sql-server exists

我如何只选择没有客户端的商店5

StoreId   ClientId   
-------   ---------
  1         4     
  1         5      
  2         5     
  2         6      
  2         7   
  3         8
Run Code Online (Sandbox Code Playgroud)

我正在尝试这样的事情:

SELECT SC.StoreId FROM StoreClients
INNER JOIN StoreClients SC
    ON StoreClients.StoreId = SC.StoreId
    WHERE SC.ClientId = 5
GROUP BY StoreClients.StoreId
Run Code Online (Sandbox Code Playgroud)

这似乎让我的一切,有客户门店,但我不能这样做,因为如果我做相反的<> 5病仍然获得商店12我不想要的.

我基本上试图在另一个查询的EXISTS IN子句中使用此结果

Ada*_*Dev 23

单程:

SELECT DISTINCT sc.StoreId
FROM StoreClients sc
WHERE NOT EXISTS(
    SELECT * FROM StoreClients sc2 
    WHERE sc2.StoreId = sc.StoreId AND sc2.ClientId = 5)
Run Code Online (Sandbox Code Playgroud)


Mar*_*zek 12

SELECT SC.StoreId 
FROM StoreClients SC
WHERE SC.StoreId NOT IN (SELECT StoreId FROM StoreClients WHERE ClientId = 5)
Run Code Online (Sandbox Code Playgroud)

这样既不是JOINGROUP BY不必要.


Joh*_*Woo 10

SELECT  DISTINCT a.StoreID
FROM    tableName a
        LEFT JOIN tableName b 
          ON a.StoreID = b.StoreID AND b.ClientID = 5
WHERE   b.StoreID IS NULL
Run Code Online (Sandbox Code Playgroud)

OUTPUT

???????????
? STOREID ?
???????????
?       3 ?
???????????
Run Code Online (Sandbox Code Playgroud)


squ*_*man 7

SELECT StoreId
FROM StoreClients
WHERE StoreId NOT IN (
  SELECT StoreId
  FROM StoreClients
  Where ClientId=5
)
Run Code Online (Sandbox Code Playgroud)

SQL小提琴