翻译MySQL查询-我的解释正确吗?

翻译MySQL查询-我的解释正确吗?,mysql,sql,Mysql,Sql,我只是想翻译查询的一部分: ...OR... AND Zip.id IN (SELECT plan_id FROM plans_zips WHERE zip_id = (SELECT id FROM zips WHERE title = '" . $Zip . "')) 据我所知,查询是这样说的: 获取所有Zip.id(从Zip表)和计划id(从计划Zip表) 其中zip_id(使用计划)=zip.id,其中完整的zip(标题)与var$zip匹配。您的建议是正确的 对于MySQL来说,使用

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

...OR... AND Zip.id IN (SELECT plan_id FROM plans_zips 
WHERE zip_id = (SELECT id FROM zips WHERE title = '" . $Zip . "'))
据我所知,查询是这样说的:

获取所有Zip.id(从Zip表)和计划id(从计划Zip表)
其中zip_id(使用计划)=zip.id,其中完整的zip(标题)与var$zip匹配。

您的建议是正确的


对于MySQL来说,使用连接来代替这样的嵌套子查询更为理想。优化器将无法优化子查询,必须首先使用最深的子查询运行它们。

您的建议是正确的

对于MySQL来说,使用连接来代替这样的嵌套子查询更为理想。优化器将无法优化子查询,必须先使用最深的子查询运行它们。

不完全如此

如果将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的观点-连接更好、更容易阅读,但不完全如此

如果将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的观点-连接更好,更容易阅读

谢谢你的澄清谢谢你的澄清谢谢你的澄清谢谢你的澄清谢谢你的澄清+1谢谢你的澄清+1