我正在尝试找出最佳查询来完成以下操作。
我有两个与ID列相关的表。
表1
ID
UserID
表2
ID
SomeDataColumn
我需要做的是从Table1
中选择我的UserID='5'
或某个号码的ID列表。这应该返回具有相应ID的多行。然后我需要删除Table2
中包含来自Table1
的返回ID列表中任何ID的所有行。
我能弄清楚如何做到这一点的唯一方法是从我的第一个表中选择所有行,将它们放在游标中,然后遍历每个对每个ID运行Delete查询的行。但似乎必须有一种更有效的方法来通过连接或其他方式来做到这一点。
有什么想法吗?谢谢大家!
答案 0 :(得分:3)
这可能会让你到达那里:
delete from Table2 where ID in (select ID from Table1 where UserID = '5')
是正确的
答案 1 :(得分:3)
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)
答案 2 :(得分:0)
DELETE Table2
WHERE ID IN (
SELECT ID FROM Table1
WHERE UserID=5
)
那是吗?
答案 3 :(得分:0)
使用联接,
DELETE FROM [Table2]
FROM [Table2] as t2
INNER JOIN [Table1] as t1 ON t2.[ID] = t1.[ID]
WHERE t1.[UserID] = 5;