繁体   English   中英

用UNION获取的数据数组的MySQL键名

[英]MySQL key name of data array fetched with UNION

objects

id    name    is_animal
-----------------------
1     dog     1
2     cat     1
3     chair   0
4     rabbit  1

查询

(SELECT name AS animal_name FROM objects WHERE is_animal = 1)
UNION
(SELECT name AS object_name FROM objects WHERE is_animal = 0)

和结果

[animal_name] => dog
[animal_name] => cat
[animal_name] => rabbit
[animal_name] => chair    // expected: [object_name] => chair

我已经在第二个SELECT中使用了AS ,为什么它返回animal_name而不是object_name

UNION

(SELECT name AS animal_name,'' object_name FROM objects WHERE is_animal = 1)
UNION
(SELECT '' as animal_name, name AS object_name FROM objects WHERE is_animal = 0)

case

select case is_animal when 1 name else '' end as  animal_name,
       case is_animal when 0 name else '' end as  object_name
from objects

在UNION查询中,始终将第一个SELECT的列名选择为最终结果视图的列名。 如果每个单独的SELECT的对应列名称不同,您如何期望列名称结尾? 最好甚至不要在UNION查询的后续SELECT中提及列名,因为它没有任何意义。

文档中 MySQL使用相同的

(SELECT 1 AS sort_col, col1a, col1b, ... FROM t1)
UNION
(SELECT 2, col2a, col2b, ... FROM t2) ORDER BY sort_col, col1a;

暂无
暂无

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

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