簡體   English   中英

從一個表中選擇ID列表,然后從SQL Server中的第二個表中刪除所有ID

[英]Select list of IDs from one table and delete all IDs from a second table in SQL Server

我試圖找出最好的查詢來完成以下任務。

我有2個與ID列相關的表。

表格1

ID
UserID

表2

ID
SomeDataColumn

我需要做的是從Table1中選擇一個ID列表,其中我的UserID='5'或某個數字。 這應該返回具有各自ID的多行。 然后,我需要刪除所有的行Table2包含從ID的我返回列表中的任何ID Table1

我能弄清楚如何做到這一點的唯一方法是從我的第一個表中選擇所有行,將它們放在游標中,然后遍歷每一行,為每個ID運行Delete查詢。 但是似乎必須有一種更有效的方法來執行聯接或其他操作。

有任何想法嗎? 謝謝大家!

這可能會帶您到那里:

delete from Table2 where ID in (select ID from Table1 where UserID = '5')

您以為SQL中有更好的方法是對的

3種方式

DELETE   FROM SomeTable
WHERE id IN(SELECT id FROM AnotherTAble WHERE USerID = 5 and id is not null)

DELETE  s
 FROM SomeTable s
JOIN AnotherTAble  a on s.ID = a.ID
WHERE a.USerID = 5


DELETE  s
 FROM SomeTable s
WHERE EXISTS (SELECT 1 from AnotherTAble  a WHERE a.ID = S.ID
AND a.USerID = 5)
 DELETE Table2
 WHERE ID IN (
     SELECT ID FROM Table1
     WHERE UserID=5
 )

是嗎

使用聯接

DELETE FROM [Table2] 
FROM [Table2] as t2 
INNER JOIN [Table1] as t1 ON t2.[ID] = t1.[ID] 
WHERE t1.[UserID] = 5; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM