翻译MySQL查询 - 我正确地解释了这个吗?

时间:2011-05-10 21:00:12

标签: mysql sql

我只是想翻译一个查询的一部分:

...OR... AND Zip.id IN (SELECT plan_id FROM plans_zips 
WHERE zip_id = (SELECT id FROM zips WHERE title = '" . $Zip . "'))

据我所知,查询是这样说的:

获取所有Zip.ids(来自zips表)并获取plan_id(来自plan_zips表) WHERE zip_id(使用plans_zips)= zip.id,其中完整的zip(标题)与var $ Zip匹配。

2 个答案:

答案 0 :(得分:2)

你的建议是对的。

对于MySQL来说,使用连接代替这样的嵌套子查询要好得多。优化器将无法优化子查询,并且必须先使用最深的查询运行。

答案 1 :(得分:1)

不完全。

如果稍微缩进SQL,它将变得更清晰。

...OR... AND 
Zip.id IN 
    (SELECT plan_id FROM plans_zips  WHERE zip_id =        //Get all the plan_ids where
        (SELECT id FROM zips WHERE title = '" . $Zip . "'))//the zip_id is the value returned from this query.

我同意James C的观点 - 连接更好更容易阅读