我有两个表,我想只显示第一个表中的子ID,而不是第二个表中的子ID。但它总是给我所有的ID,甚至是第二个表中的ID。这是存储过程;
ALTER PROC [dbo].[GetAllChildren]
@UserID int
AS
SELECT Child_ID FROM firstTable
UNION
SELECT Child_ID FROM SecondTable WHERE User_ID = @UserID
有什么想法吗?
答案 0 :(得分:2)
尝试这个
ALTER PROC [dbo].[GetAllChildren]
@UserID int
AS
SELECT Child_ID
FROM firstTable
WHERE Child_ID NOT IN
(SELECT Child_ID FROM SecondTable WHERE User_ID = @UserID)
答案 1 :(得分:0)
如果您不需要第二个表子ID
,为什么使用UNION?SELECT Child_ID FROM firstTable
这足以得到你想要的东西。
答案 2 :(得分:0)
SELECT DISTINCT ft.Child_ID
FROM firstTable ft
LEFT JOIN secondTable st
on ft.Child_ID = st.Child_ID
WHERE st.Child_ID is null
答案 3 :(得分:0)
将UNION
关键字更改为EXCEPT
(关系差异a.k.a.减去),例如
SELECT Child_ID FROM firstTable
EXCEPT
SELECT Child_ID FROM SecondTable WHERE User_ID = @UserID