请查看下面的查询 - 我得到 Unknown column 'u.id' in 'on clause'
SELECT id, username,
coalesce(
(SELECT name from company c
INNER JOIN user_company uc
ON uc.user_id = u.id
AND c.id = uc.company_id), 'NOT-AVAILABLE'
) companyname
FROM `user` u
最佳答案
根据您的评论,相关性不能放在相关子查询的 JOIN
中。
但是,它可以放在相关子查询的 WHERE
子句中。
SELECT
id,
username,
coalesce(
(SELECT name
FROM company c
INNER JOIN user_company uc
ON c.id = uc.company_id
WHERE uc.user_id = u.id
),
'NOT-AVAILABLE'
) companyname
FROM
`user` u
这回答了你明确的问题;为什么您的查询在句法上失败。
但是,我会用一个简单的 LEFT JOIN
替换整个关联。
SELECT
u.id,
u.username,
COALESCE(c.name, 'NOT-AVAILABLE') companyname
FROM
`user` u
LEFT JOIN
`user_company` uc
ON uc.user_id = u.id
LEFT JOIN
`company` c
ON c.id = uc.company_id
关于php - 子选择查询中的表名别名范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049115/