0

2つのテーブルがあり、最初のテーブルにあり、2番目のテーブルにはない子IDのみを表示したいと思います。ただし、2番目のテーブルにあるIDも含めて、常にすべてのIDが得られます。これはストアドプロシージャです。

ALTER PROC [dbo].[GetAllChildren]

@UserID int

AS

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

何かアイデアはありますか?

4

4 に答える 4

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)
于 2012-04-09T09:42:08.133 に答える
0

2番目のテーブルの子IDが必要ないのに、なぜUNIONを使用しているのですか

SELECT Child_ID FROM firstTable

これはあなたが望むものを手に入れるのに十分です。

于 2012-04-09T09:42:03.923 に答える
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
于 2012-04-09T17:06:55.283 に答える
0

UNIONキーワードをEXCEPT(リレーショナル差分別名マイナス)に変更します。例:

SELECT Child_ID FROM firstTable
EXCEPT
SELECT Child_ID FROM SecondTable WHERE User_ID = @UserID
于 2012-04-10T09:27:40.583 に答える