mysql – 在Yii2 find()/ QueryBuilder中使用WHERE条件的SELECT
发布时间:2020-12-11 23:45:10 所属栏目:MySql教程 来源:网络整理
导读:我能够找到子查询构建的简单示例,但是当我需要包含WHERE条件时,我无法弄清楚或找不到解决方案.我试图模拟以下声明 SELECT ParentTable.*,(SELECT MAX(ChildTable.NumberField) FROM ChildTable WHERE ChildTable.FK_Id = ParentTable.Id)FROM ParentTable 猜
我能够找到子查询构建的简单示例,但是当我需要包含WHERE条件时,我无法弄清楚或找不到解决方案.我试图模拟以下声明……
猜猜我需要像……
但它给了我一个错误:找不到列:1054’where子句’中的未知列’parentTable.id’ 编辑:
最佳答案
从SQL角度来看,示例查询在select子句中使用“相关子查询”,这通常是一种形成查询的非常低效的方法.
虽然乍一看似乎更复杂,因此效率更低,但通常更好的性能是避免在select子句中使用“相关子查询”并使用“派生表”替换,如下所示:
注意,带有select子句的相关子查询可能返回NULL,因此,如果用派生表替换它们,则等效连接类型是LEFT OUTER JOIN(或简称为LEFT JOIN),因为这也允许NULL结果.但是,如果列不需要NULL,则使用更高效的INNER JOIN. 因不了解Yii2语法而提前道歉,但知道有效的替代方法可能有助于解决问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |