具有左连接条件的 MySQL case 语句

标签 mysql case case-when

我在下面有一个 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

我怎样才能写出正确的请求?

最佳答案

您不能在同一 SELECTWHERE 子句中引用列别名,因为 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/

相关文章:

sql-server - 比较两个子查询

Ruby:不同数量的 case 语句

MySQL 带有 CASE 的复杂 WHEN 过滤器

mysql - 如何在phpmyadmin中连接两个表的两个索引

MySQL/Classic ASP - 参数化查询

ruby - 使用 ruby​​ 的 'case'/'when' 方法与 ||或 && 运算符等

java - ZK标签中的switch和case属性?

php - 在单选查询中获取两个具有匹配 ID 的表记录

php - 无法从 <select> 选项检索值以发送到 php

php - 单个 `when` 子句与多个 `then` 子句