IN语句中的子查询无法正常工作

时间:2014-02-08 20:46:39

标签: mysql subquery

我遇到了这个查询的问题,子查询本身运行得很好,但是当我把它放在IN语句中时,结果完全出乎意料,任何行都包含来自子查询的id。所以我的问题是,我做错了什么?谢谢你的帮助!

SELECT *
FROM `wp_2_temp_elements`
WHERE  subtemplateID IN (
     SELECT bridge.sub_templates
     FROM `wp_2_templates` AS templates
     INNER JOIN `wp_2_b_templates_sub_templates` AS bridge ON templates.id = bridge.templates
     WHERE templates.parent = 928
     OR templates.id = 928
     ORDER BY templates.id DESC
)

1 个答案:

答案 0 :(得分:0)

我猜你真的不想在内部查询中使用join。只是一个相关的子查询:

SELECT *
FROM `wp_2_temp_elements` templates
WHERE  subtemplateID IN (
     SELECT bridge.sub_templates
     FROM `wp_2_b_templates_sub_templates` AS bridge
     WHERE templates.id = bridge.templates and
           (templates.parent = 928 OR templates.id = 928)
)
ORDER BY templates.id DESC;

order by在子查询中也没有意义。