我只是在尝试翻译查询的一部分:
...OR... AND Zip.id IN (SELECT plan_id FROM plans_zips
WHERE zip_id = (SELECT id FROM zips WHERE title = '" . $Zip . "'))据我所知,这个查询是这样说的:
获取所有标题(从ZIPS表)和plan_id (从plan_zips表),其中zip_id (使用plans_zips) = zip.id,其中完整的zip (标题)与变量$Zip匹配。
发布于 2011-05-11 05:10:23
不完全是。
如果您将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的观点-- joins更好,也更容易阅读
发布于 2011-05-11 05:03:14
你的建议是对的。
对于MySQL,使用连接代替嵌套子查询要好得多,如下所示。优化器将无法优化子查询,它们必须首先与最深的查询一起运行。
https://stackoverflow.com/questions/5956423
复制相似问题