在同一查询中重用选择结果

时间:2012-08-16 07:06:05

标签: mysql select reusability

我有这样的查询:

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语句也是一个坏主意。

2 个答案:

答案 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>';