RICH-ATONE

clickhouse left join产生的空值或者默认值问题解析

建表语句:

CREATE TABLE default.mt_table
(
    `date` Date,
    `id` UInt8,
    `name` String
)
ENGINE = MergeTree(date, (id, name), 8192)

  

插入数据:

insert into mt_table (date,id,name) values ('2019-05-01',1,'zhangsan');
insert into mt_table (date,id,name) values ('2019-05-02',2,'lisi');

  

执行sql示例:

                            select a.* ,b.* from 
                            (select * from mt_table where id=1) a 
                            left join 
                            (select * from mt_table where id=2) b
                            on a.id=b.id 
                            ;

  

结果示例:

┌───────date─┬─id─┬─name─────┬─────b.date─┬─b.id─┬─b.name─┐
│ 2019-05-01 │ 1 │ zhangsan │ 1970-01-01 │ 0 │ │
└────────────┴────┴──────────┴────────────┴──────┴────────┘

可以观察到正常关联的话不会有null值产生:

关联不到的id数值类型默认为0;

关联不到的日期类型默认为1970-01-01;

关联不到的String类型为空  ''

 

clickhouse常见的三种空值问题以及解决方案

posted on 2022-08-03 15:33  RICH-ATONE  阅读(1905)  评论(0编辑  收藏  举报

导航