我有兩個表,我只想顯示在第一個表中,而不是在第二個表中的子ID。但它總是給我所有的ID,甚至是那些在第二張桌子上的ID。這是存儲過程;在SQL語句中的聯合
ALTER PROC [dbo].[GetAllChildren]
@UserID int
AS
SELECT Child_ID FROM firstTable
UNION
SELECT Child_ID FROM SecondTable WHERE User_ID = @UserID
有什麼想法嗎?
我有兩個表,我只想顯示在第一個表中,而不是在第二個表中的子ID。但它總是給我所有的ID,甚至是那些在第二張桌子上的ID。這是存儲過程;在SQL語句中的聯合
ALTER PROC [dbo].[GetAllChildren]
@UserID int
AS
SELECT Child_ID FROM firstTable
UNION
SELECT Child_ID FROM SecondTable WHERE User_ID = @UserID
有什麼想法嗎?
嘗試這一個
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)
你爲什麼要使用UNION如果你不需要第二個表子ID
SELECT Child_ID FROM firstTable
這是足以讓你想要什麼。
-1請閱讀問題正確:) – 2012-04-09 09:42:53
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
更改UNION
關鍵字EXCEPT
(關係差又名負)例如
SELECT Child_ID FROM firstTable
EXCEPT
SELECT Child_ID FROM SecondTable WHERE User_ID = @UserID
感謝的人,它的工作:) – 2012-04-09 09:43:50
歡迎您:)做標記爲答案;) – 2012-04-09 09:44:38