我只是想翻译一个查询的一部分:
...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匹配。
答案 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的观点 - 连接更好更容易阅读