首先,我不知道标题是否正确,但让我告诉你我想要什么,我会按照建议更正。 所以,我有两张桌子:
我想要的是删除table2
中ID
中subid
等于table1
table1.name
的任何元素,其中table1
等于指定值
如果我在ID subid name
1 ... 1 ...... name1
2 ... 3 ...... name2
3 ... 2 ...... name1
4 ... 1 ...... name2
table2
以及ID
1
2
3
4
table2
我想删除DELETE FROM table2
WHERE ID = (SELECT subid
FROM table1
WHERE NAME = "name1")
中ID = subid的元素,当name = name1 时,这意味着元素1和2.
类似的东西:
RelativeLayout child = (RelativeLayout) findViewById(R.id.work_list); //new child
这可能吗?
答案 0 :(得分:5)
你非常接近。
您只需要= ANY
而不是=
,因为子查询可以返回多行SQL Fiddle。
DELETE
FROM table2
WHERE ID = ANY (SELECT t1.subid
FROM table1 t1
WHERE t1.name = 'name1')
虽然这通常使用IN
DELETE
FROM table2
WHERE ID IN (SELECT t1.subid
FROM table1 t1
WHERE t1.name = 'name1')
我对您发布的查询进行了其他一些更改...
QUOTED_IDENTIFIER
设置下工作,并且不会被解释为引用名为name1
的列。答案 1 :(得分:1)
你也可以使用连接删除,所以我们很有可能。
您可以先使用以下方式识别(将要)删除的记录:
select t2.*
from table2 t2
inner join table1 t1 on t2.id = t1.subId
and t1.name = 'whatever'
然后执行删除:
delete t2
from table2 t2
inner join table1 t1 on t2.id = t1.subId
and t1.name = 'whatever'
@eckes看到我用我正在使用的语法的小提琴:http://sqlfiddle.com/#!6/260a5