我正在尝试通过加入两个表Customer和Transaction来查找客户未进行任何交易的位置。但是,我的查询没有返回任何值。
SELECT
[CUST].[CustID],
[CUST].[CustName]
FROM [Cust]
INNER JOIN [TRANS]
ON [CUST].[CustID] = [TRANS].[CustID]
WHERE [CUST].[CustID] != [TRANS].[CustID]
答案 0 :(得分:2)
你在做什么和做的一样:
SELECT [CUST].[CustID],
[CUST].[CustName]
FROM [Cust]
INNER JOIN [TRANS]
ON [CUST].[CustID] = [TRANS].[CustID] AND [CUST].[CustID] != [TRANS].[CustID]
这显然不会发生,因此没有行的结果。
为了让没有交易的客户,您应该这样做:
SELECT [CUST].[CustID],
[CUST].[CustName]
FROM [Cust]
WHERE NOT EXISTS (SELECT 1
FROM [TRANS]
WHERE [CUST].[CustID] = [TRANS].[CustID]
)
答案 1 :(得分:1)
你正在加入
[CUST].[CustID] = [TRANS].[CustID]
但是where子句说
[CUST].[CustID] != [TRANS].[CustID]
如果您想要没有交易的客户列表,您应该使用LEFT JOIN
:
SELECT
[CUST].[CustID],
[CUST].[CustName]
FROM [Cust]
LEFT JOIN [TRANS]
ON [CUST].[CustID] = [TRANS].[CustID]
WHERE [TRANS].[CustID] is null