mysql - 如何访问 MySQL 中的内部别名?

标签 mysql join union alias

我的存储过程需要这个条件,我能否以任何方式从其上下文外部访问在内部级别中声明的别名

这个有效:-

SELECT Count(*)
FROM   (SELECT id
        FROM   postdata
        WHERE  id IN ( 4, 5, 6 )
        UNION
        SELECT id
        FROM   (SELECT id,
                       date_completed
                FROM   postdata
                WHERE  id IN ( 1, 2, 3 ))a
        WHERE  a.date_completed in  ( "2012-1-10", "2012-10-02" ) )b  

是否有可能使这项工作成功

SELECT Count(*)
FROM   (SELECT id
        FROM   postdata
        WHERE  id IN ( 4, 5, 6 )
        UNION
        SELECT id
        FROM   (SELECT id,
                       date_completed
                FROM   postdata
                WHERE  id IN ( 1, 2, 3 ))a)b
WHERE  a.date_completed IN ( "2012-1-10", "2012-10-02" )  

最佳答案

据我所知,无法访问内部别名 a

您必须在内部查询中添加判别式:

SELECT Count(*)
FROM   (SELECT 'a' AS discriminant,
               id
        FROM   postdata
        WHERE  id IN ( 4, 5, 6 )
        UNION
        SELECT 'b' AS discriminant,
               id
        FROM   (SELECT id,
                       date_completed
                FROM   postdata
                WHERE  id IN ( 1, 2, 3 ))a)b
WHERE  b.discriminant= 'a'
        OR ( b.discriminant= 'b'
             AND b.id IN ( 1, 2 ) )  

参见 this fiddle .

关于mysql - 如何访问 MySQL 中的内部别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17103429/

相关文章:

java - contextInitialized() 函数对 Tomcat 9 的依赖性在发出请求之前不会加载

php - while 循环内部 if 语句困惑

mysql - 如何连接表而不多次重复列值?

php - 在 PHP 中添加 Echo

Mysql 在一个查询中使用连接表进行搜索和排序

mysql - 使用 JOINS 而不是子查询

sql - 单独放置 WHERE 语句以使 UNION 函数起作用

mysql - 如何在 mysql UNION 查询中编写这个 GROUP BY

mysql - 2 个联合查询之间的差异

mysql - hibernate + mysql + 在文件中加载数据