我有这样的查询:
DELETE FROM rules_table
WHERE
type1 = (
SELECT type_id
FROM types_table
WHERE name = '<some_name>')
OR
type2 = (
SELECT type_id
FROM types_table
WHERE name = '<some_name>')
请注意<some_name>
在两次出现时都相同
我从php脚本提交一个查询,我更喜欢它只是一个请求,而不是选择带有一个请求的type_is,解析结果并提交删除请求。
据我所知,两次运行相同的SELECT
语句也是一个坏主意。
答案 0 :(得分:2)
试
DELETE FROM rules_table
WHERE (
SELECT type_id
FROM types_table
WHERE name = '<some_name>'
) in (type1, type2)
答案 1 :(得分:2)
而不是subquery
,您可以使用INNER JOIN
:
DELETE a
FROM rules_table a
INNER JOIN types_table b
ON (a.type1 = b.type_id OR a.type2 = b.type_id)
WHERE b.name = '<some_name>';