MySQL : Using alias inside a join condition

标签 mysql sql

SELECT t1.*, IFNULL(t2.profile_id, t3.profile_id) AS `profile_id`
FROM table1 AS t1
LEFT JOIN table2 AS t2
    ON t1.id = t2.some_coulmn
LEFT JOIN table3 AS t3
    ON t1.id = t3.some_coulmn
LEFT JOIN table4 AS t4
    ON profile_id = t4.some_column

我正在尝试在连接条件中使用别名 (profile_id)。它失败。有办法做到这一点吗?

最佳答案

SELECT 子句中定义的列别名不能在连接条件中使用。这是因为 FROM 子句在 SELECT 子句之前进行计算。

如果我正确地理解了你,你可能想要:

SELECT t1.*, IFNULL(t2.profile_id, t3.profile_id) AS `profile_id`
FROM table1 AS t1
LEFT JOIN table2 AS t2
    ON t1.id = t2.some_coulm
LEFT JOIN table3 AS t3
    ON t1.id = t3.some_coulm
LEFT JOIN table4 AS t4
    ON IFNULL(t2.profile_id, t3.profile_id) = t4.some_column

关于MySQL : Using alias inside a join condition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55483335/

相关文章:

mysql - 使用 MySQL key 转置

sql - SQL 的 "LIKE ' %searched_word %'"的 R 等价物是什么?

mysql - 在复杂查询中保存 SELECT 结果的顺序

sql - 为什么需要这个 UNIQUE 约束?

php 好友表

MYSQL 在大型数据库上屏蔽数据更新速度非常慢

php - 如何在 PHP 函数中的查询中声明变量

mysql - SQL CONCAT 字符串 + WHERE 子句中的列

javascript - 如何生成动态下拉菜单 PHP Javascript mySQL

sql - MySQL 连接两个表从第二个表计数和求和