gpt4 book ai didi

MySQL 别名和字段具有相同的名称 - 在 Having 子句中评估哪个?

转载 作者:行者123 更新时间:2023-11-29 06:16:47 25 4
gpt4 key购买 nike

我有一个 mysql 查询,它从多个我无法编辑的表中连接电话号码,我需要创建一个与其中一个表具有相同字段名称的输出。我正在使用 CASE 语句来执行此操作。这是我的查询的一个简单版本:

SELECT t1.`id` as id,
CASE
WHEN t1.`has_company_phone` = 1 THEN t1.`company_phone`
ELSE t2.`phone`
END AS `phone`
FROM `input_table1` t1,
LEFT OUTER JOIN `input_table2` t2
ON (t2.`id` = t1.`matched_company_id`)
HAVING phone IS NOT NULL;

编辑:在此查询中,HAVING 子句中评估的是 t2.phone、别名电话还是两者?我的目标是在此 having 子句中评估别名。

EG:t1.company_phone 存在,但 t2.phone 为 NULL。我想使用 t1.company_phone 包含此记录,并将别名设为 phone。如果我将 HAVING 更改为 WHERE 子句,则该记录将不会显示。

最佳答案

在 MySQL 中,HAVING 子句将始终从选择列表中搜索所需的项目。

在选择列表中找到后,将使用找到的项目。

如果未找到,则抛出错误。

更新:

实际上,在您的 SQL 中,您应该将 HAVING 替换为 WHERE,因为它与 WHERE 相同。使用 WHERE,困惑就会消失。 WHERE 子句将始终使用真实的表列,而不是别名。

关于MySQL 别名和字段具有相同的名称 - 在 Having 子句中评估哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35427117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com