ali*_*ali 1 sql-server join sql-delete
首先,我不知道标题是否正确,但让我告诉你我想要什么,我会按照建议更正.所以,我有2个表:
我要的是删除任何元素从table2具有ID相等subid的table1,在这里table1.name等于指定的值.
如果我有这些元素 table1
ID subid name
1 ... 1 ...... name1
2 ... 3 ...... name2
3 ... 2 ...... name1
4 ... 1 ...... name2
Run Code Online (Sandbox Code Playgroud)
和这些行 table2
ID
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
table2当name = name1时,我想用ID = subid 删除那些元素,,这意味着元素1和2.
就像是:
DELETE FROM table2
WHERE ID = (SELECT subid
FROM table1
WHERE NAME = "name1")
Run Code Online (Sandbox Code Playgroud)
这可能吗?
你非常接近.
您只需要= ANY而不是=因为子查询可以返回多行SQL Fiddle.
DELETE
FROM table2
WHERE ID = ANY (SELECT t1.subid
FROM table1 t1
WHERE t1.name = 'name1')
Run Code Online (Sandbox Code Playgroud)
虽然这更常用表达 IN
DELETE
FROM table2
WHERE ID IN (SELECT t1.subid
FROM table1 t1
WHERE t1.name = 'name1')
Run Code Online (Sandbox Code Playgroud)
我对您发布的查询所做的其他一些更改......
QUOTED_IDENTIFIER设置下工作,并且不会被解释为引用一个名为的列name1.