[英]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 2
为NULL
,所以format
从id 1
填充,而其他所有内容都从id 2填充。
能为我做到这一点的MySQL语句是什么?
对于给定的数据,您可以使用left join
和coalesce()
来对值进行优先级排序:
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.