2012-04-09 37 views
0

我有兩個表,我只想顯示在第一個表中,而不是在第二個表中的子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 

有什麼想法嗎?

回答

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) 
+0

感謝的人,它的工作:) – 2012-04-09 09:43:50

+0

歡迎您:)做標記爲答案;) – 2012-04-09 09:44:38

0

你爲什麼要使用UNION如果你不需要第二個表子ID

SELECT Child_ID FROM firstTable 

這是足以讓你想要什麼。

+0

-1請閱讀問題正確:) – 2012-04-09 09:42:53

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 
0

更改UNION關鍵字EXCEPT(關係差又名負)例如

SELECT Child_ID FROM firstTable 
EXCEPT 
SELECT Child_ID FROM SecondTable WHERE User_ID = @UserID