1

我有一个这样的查询:

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两次运行相同的语句也是一个坏主意。

4

2 回答 2

2

尝试

DELETE FROM rules_table
WHERE  (
         SELECT type_id
         FROM types_table
         WHERE name = '<some_name>'
       ) in (type1, type2)
于 2012-08-16T07:07:45.643 回答
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>';
于 2012-08-16T07:13:42.650 回答