mariadb NULL在联合查询中被视为小数?

bjp0bcyl  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(45)

查看此查询(MariaDB 10.11.4)

DROP TEMPORARY TABLE IF EXISTS temp_table;

CREATE TEMPORARY TABLE temp_table AS
SELECT field_a as number, field_b as name FROM my_table;

DESCRIBE temp_table;

字符串
其输出
| 领域|类型|Null|关键|默认|额外|
| --|--|--|--|--|--|
| number| bigint(20)unsigned|没有||||
| 名称|中文(简体)|没有||||
但只要我对一个虚拟数据做UNION

DROP TEMPORARY TABLE IF EXISTS temp_table;

CREATE TEMPORARY TABLE temp_table AS
select field_a as number, field_b as name from my_table
union
select null as number, 'dummy' as name from my_table;

DESCRIBE temp_table;


现在,number的数据类型从bigint(20) unsigned更改为decimal(20,0)
| 领域|类型|Null|关键|默认|额外|
| --|--|--|--|--|--|
| number|十进制(20,0)|是的||||
| 名称|中文(简体)|没有||||
为什么会这样?
我已经通过转换null解决了这个问题,但是我想知道是否有什么可以调整的地方,而不是编辑我的查询语句(有太多了!)

select field_a as number, field_b as name from my_table
union
select cast(null as unsigned) as number, 'dummy' as name from my_table;


就是这张table

CREATE TABLE
  `my_table` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `field_a` bigint(20) unsigned NOT NULL,    
    `field_b` varchar(50) NOT NULL,
    PRIMARY KEY (`id`)
  ) ENGINE = InnoDB

jecbmhm3

jecbmhm31#

好吧,正如@danblack所指出的,这是一个bug。我将把它留在这里,以防有人在这个问题上出错。

相关问题