我在下面有一个 MySQL 请求,但它无法正常工作。
错误:
#1054 - Unknown column 'uid' in 'on clause'
查询:
SELECT
u.email,
CASE
WHEN c.from_user_id = '301' THEN c.to_user_id
WHEN c.to_user_id = '301' THEN c.from_user_id
END AS uid
FROM `contacts` AS c
LEFT JOIN `users` AS u
ON u.id = uid
HAVING uid >0
我怎样才能写出正确的请求?
最佳答案
您不能在同一 SELECT
的 WHERE
子句中引用列别名,因为 WHERE
用于查找行在 SELECT
子句对它们进行操作之前。将其放入子查询中。
SELECT u.email, c.uid
FROM (SELECT CASE
WHEN from_user_id = '301' THEN to_user_id
ELSE from_user_id
END AS uid
FROM contacts
WHERE from_user_id = '301' OR to_user_id = '301') AS c'
LEFT JOIN users AS u
ON u.id = c.uid
关于具有左连接条件的 MySQL case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36510573/