我有一个mysql查询,它连接多个无法编辑的表的电话号码,我需要创建一个与其中一个表具有相同字段名的输出。我用一个案例陈述来做这件事。下面是我的查询的一个简单版本:
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正在计算,还是别名phone,或者两者都是?我的目标是在这个having子句中计算别名。
t1.company_phone存在,但是t2. exists是空的。我希望使用t1.company_phone包括此记录,并使用别名be phone。如果我将WHERE改为WHERE子句,则此记录将不会显示。
发布于 2016-02-16 09:03:18
在MySQL中,will子句总是从select列表中搜索所需的项。
一旦在“选择”列表中找到,将使用找到的项。
如果找不到,则抛出错误。
更新:
实际上,在您的SQL中,应该用WHERE替换WHERE,因为它与WHERE相同。用什么地方,混乱就会消失。WHERE子句将始终使用实表列,而不是别名。
https://stackoverflow.com/questions/35427117
复制相似问题