[英]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')
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.