我的存储过程需要这个条件,我能否以任何方式从其上下文外部访问在内部级别中声明的别名
这个有效:-
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/