繁体   English   中英

如何通过使用MySQL覆盖NULL值将两行合并为一行?

[英]How do I combine two rows into one single row by overriding NULL values using MySQL?

我有两行是这样的:

id    title            format    region    discs    user_id    origin_id
------------------------------------------------------------------------
1     12 Monkeys       DVD       NULL      NULL     NULL       NULL
2     Twelve Monkeys   NULL      NULL      1        2          1

我想做一个SELECT调用,当user_id不为NULL时总是返回数据。 这是我想要的结果应该是:

id    title            format    region    discs    user_id   origin_id
-----------------------------------------------------------------------
2     Twelve Monkeys   DVD       NULL      1        2         1

如您所见,由于id 2NULL ,所以formatid 1填充,而其他所有内容都从id 2填充。

能为我做到这一点的MySQL语句是什么?

对于给定的数据,您可以使用left joincoalesce()来对值进行优先级排序:

select coalesce(t.id, t2.id) as id,
       coalesce(t.title, t2.title) as title,
       coalesce(t.format, t2.format) as format,
       coalesce(t.region, t2.region) as region,
       coalesce(t.discs, t2.discs) as discs,
       t.user_id
from t left join
     t t2
     on t2.user_id is null
where t.user_id is not null;

暂无
暂无

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

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