我的表数据看起来像
Col1 | Col2 | Col3 1 | NULL | NULL NULL | 2 | NULL NULL | NULL | 3
对于任何列,只有入口。这意味着,在上面的数据中,如果row1具有Col1的值,那么Col1将没有值具有值。同样,如果row1具有Col1的值,则它不具有任何其他列的值。
我想编写一个查询,这样我只能获得一行整个数据(保留NULL值)。即
Col1 | Col2 | Col3 1 | 2 | 3
答案 0 :(得分:4)
最简单的方法是使用聚合:
select max(col1) as col1, max(col2) as col2, max(col3) as col3
from t;
答案 1 :(得分:0)
select
sum(ifnull(col1,0)) as col1,
sum(ifnull(col2,0)) as col2
sum(ifnull(col3,0)) as col3
from t;
答案 2 :(得分:0)
假设该表名为tab,如果只有3列,则以下查询将起作用:
select t1.Col1, t2.Col2, t3.Col3
from tab t1, tab t2, tab t3
where t1.Col1 is not null and t2.Col2 is not null and t3.Col3 is not null
问题是查询必须为每个附加列的表别名。它可能不完美,但它是一种解决方案。