如何排除SQL SELECT某些值的记录(How to exclude records with c

2019-07-21 12:47发布

如何只选择没有客户端的存储5

StoreId   ClientId   
-------   ---------
  1         4     
  1         5      
  2         5     
  2         6      
  2         7   
  3         8

我想是这样的:

SELECT SC.StoreId FROM StoreClients
INNER JOIN StoreClients SC
    ON StoreClients.StoreId = SC.StoreId
    WHERE SC.ClientId = 5
GROUP BY StoreClients.StoreId

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

我基本上是试图在另一个查询的使用这个结果EXISTS IN条款

Answer 1:

单程:

SELECT DISTINCT sc.StoreId
FROM StoreClients sc
WHERE NOT EXISTS(
    SELECT * FROM StoreClients sc2 
    WHERE sc2.StoreId = sc.StoreId AND sc2.ClientId = 5)


Answer 2:

SELECT SC.StoreId 
FROM StoreClients SC
WHERE SC.StoreId NOT IN (SELECT StoreId FROM StoreClients WHERE ClientId = 5)

这样既不JOIN也不GROUP BY是必要的。



Answer 3:

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
  • SQLFiddle演示

OUTPUT

╔═════════╗
║ STOREID ║
╠═════════╣
║       3 ║
╚═════════╝


Answer 4:

SELECT StoreId
FROM StoreClients
WHERE StoreId NOT IN (
  SELECT StoreId
  FROM StoreClients
  Where ClientId=5
)

SQL小提琴



Answer 5:

您可以使用EXCEPT语法 ,例如:

SELECT var FROM table1
EXCEPT
SELECT var FROM table2


Answer 6:

<> will surely give you all values not equal to 5.

如果你在表中的多个记录,它会给你所有除5.如果在另一方面,你只有一个,你会得到一个肯定。 给表模式,使人们可以正确地帮助你



文章来源: How to exclude records with certain values in sql select