无法识别左侧联接子查询上的Where子句



我想对左联接进行子查询,但左联接中的where子句无法识别这是我的查询

SELECT * FROM proposal p
LEFT JOIN (SELECT MAX(id_verifikasi), id_proposal FROM verifikasi v WHERE v.id_proposal = p.id_proposal) as v on p.id_proposal = v.id_proposal
WHERE p.id_unit = 6

并返回类似的错误

#1054 - Unknown column 'p.id_proposal' in 'where clause'

我做错了什么?什么是正确的查询

我怀疑您想将表proposal连接到一个查询,该查询为表verifikasi:的每个id_proposal返回最大id_verifikasi

SELECT * 
FROM proposal p
LEFT JOIN (
SELECT id_proposal, MAX(id_verifikasi) id_verifikasi 
FROM verifikasi 
GROUP BY id_proposal
) v ON p.id_proposal = v.id_proposal
WHERE p.id_unit = 6

FROM子句中有一个相关的子查询。只有MySQL的最新版本通过横向连接支持这一点。

在您的情况下,查询返回一列最多一行,因此它是一个标量相关子查询。因为您在外部查询中进行筛选,所以性能最好的查询将使用相关的子查询:

SELECT p.*,
(SELECT MAX(v.id_verifikasi)
FROM verifikasi v
WHERE v.id_proposal = p.id_proposal
)
FROM proposal p
WHERE p.id_unit = 6;

相关内容

  • 没有找到相关文章

最新更新