繁体   English   中英

在子查询的别名上使用where条件

[英]Use where condition on alias name of subquery

SELECT
   ID
 , NAME
 , EMAIL
 , (SELECT Address FROM TABLE1 where T1ID=ID) as NewAddress 
FROM TABLE2 
WHERE NewAddress LIKE '%string%';

在此查询中,我想检查NewAddress列上的条件,我不想传递子查询中的条件(有某种原因)...

我的意思是说我想在这里检查子查询别名的条件NewAddress

在这里,我收到“ where子句”中的未知列“ NewAddress”的错误

我的建议是取消子查询,并使用联接重写查询:

SELECT  t2.ID,
        t2.Name, 
        t2.Email,
        t1.Address AS NewAddress 
FROM    Table2 AS t2
        INNER JOIN Table1 AS t1
            ON t1.ID = t2.T1ID
WHERE   t1.Address like '%string%';

它将解决您在该列上进行过滤的问题,并且几乎可以肯定会有更好的表现。 双赢的局面。

您可以将查询的一部分放在另一个子查询中,例如thie:

SELECT * FROM
(
 SELECT
 ID
 , NAME
 , EMAIL
 , (SELECT Address FROM TABLE1 where T1ID=ID) as NewAddress 
 FROM TABLE2
 ) AS SUBQUERY_01
WHERE NewAddress LIKE '%string%';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM