如何在sql中过滤空伪列的查询?

tgabmvqs  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(272)

我有这样的情况,必须比较空的虚拟字段。

SELECT id, name, contact, landline, '' fax
FROM table1 
WHERE contact LIKE '%123%'
   OR landline LIKE '%123%'
   OR fax LIKE '%123%'

执行后会产生如下错误:
“where子句”中的未知列“fax”
有可能吗?

3pvhb19x

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产品。

afdcj2ne

afdcj2ne2#

这是不可能的;不能使用在同一文件中定义的别名 SELECTWHERE .
mysql扩展了 HAVING 子句,以便将条件移动到 HAVING :

SELECT id, name, contact, landline, '' as fax
FROM table1
HAVING contact LIKE '%123%' OR landline LIKE '%123%' OR fax LIKE '%123%'

相关问题