SQL查询:
SELECT
IF(
pu.userPayeeType='fiziska',
CONCAT(pu.userName,' ', pu.userLastName),
pu.userCompanyName
) AS supplierName
FROM
publicUsers pu
WHERE
supplierName LIKE '%Jo%'
错误代码:1054。“where子句”
中的未知列'supplierName'根据我的理解,SQL查询从底部向上“有点”进行评估和解析,这意味着WHERE子句还不知道别名“supplierName”是什么,并抛出此错误。
如何针对列内容创建条件SELECT?
数据库内容:
userPayeeType | userName | userLastName | userCompanyName
--------------+----------+--------------+------------------
'fiziska' | John | Doe |
--------------+----------+--------------+------------------
'fiziska' | Joe | Pie |
--------------+----------+--------------+------------------
'other' | | | 'Joes Company, Ltd'
--------------+----------+--------------+------------------
首选结果:
Row # | supplierName
-------+--------------------
1. | 'John Doe'
-------+--------------------
2. | 'Joe Pie'
-------+--------------------
3. | 'Joes Company, Ltd'
我是否遗漏了语法错误?
答案 0 :(得分:1)
您不能在where子句中使用别名。您可以使用coalesce来获取第一个非null值。
SELECT
IF(
pu.userPayeeType='fiziska',
CONCAT(pu.userName,' ', pu.userLastName),
pu.userCompanyName
) AS supplierName
FROM
publicUsers pu
WHERE
coalesce(pu.userName,pu.userCompanyName) LIKE '%Jo%';
甚至是列之间OR
的简单位置。