我有这样的情况,必须比较空的虚拟字段。
SELECT id, name, contact, landline, '' fax FROM table1 WHERE contact LIKE '%123%' OR landline LIKE '%123%' OR fax LIKE '%123%'
执行后会产生如下错误:“where子句”中的未知列“fax”有可能吗?
3pvhb19x1#
将原始查询 Package 到派生表(子查询)中。对其结果应用条件:
select id, name, contact, landline, fax from ( SELECT id, name, contact, landline, '' fax FROM table1 ) dt WHERE contact LIKE '%123%' OR landline LIKE '%123%' OR fax LIKE '%123%'
符合ansi sql标准的解决方案,将适用于大多数dbms产品。
afdcj2ne2#
这是不可能的;不能使用在同一文件中定义的别名 SELECT 在 WHERE .mysql扩展了 HAVING 子句,以便将条件移动到 HAVING :
SELECT
WHERE
HAVING
SELECT id, name, contact, landline, '' as fax FROM table1 HAVING contact LIKE '%123%' OR landline LIKE '%123%' OR fax LIKE '%123%'
2条答案
按热度按时间3pvhb19x1#
将原始查询 Package 到派生表(子查询)中。对其结果应用条件:
符合ansi sql标准的解决方案,将适用于大多数dbms产品。
afdcj2ne2#
这是不可能的;不能使用在同一文件中定义的别名
SELECT
在WHERE
.mysql扩展了
HAVING
子句,以便将条件移动到HAVING
: