Mysql按相反顺序选择列,忽略空值

Mysql按相反顺序选择列,忽略空值,mysql,Mysql,我有这样一个数据集: 我想忽略空值,按相反顺序选择这些列 col1 col2 col3 col4 1 2 3 null 1 4 null null 1 3 5 null 1 null null null 我想把它选进这个: col1 col2 col3 col4 3 2 1 null 4 1 null null 5 3 1 null 1 null null null 对于大量的

我有这样一个数据集: 我想忽略空值,按相反顺序选择这些列

col1 col2 col3 col4
1     2    3    null
1     4   null  null
1    3     5    null
1    null  null null
我想把它选进这个:

col1 col2 col3 col4
3    2    1    null
4   1    null  null
5   3    1     null
1   null null  null
对于大量的列,有没有一个好方法可以做到这一点?

您可以使用
COALESCE()
函数,并使用不同的列别名或名称以相反的顺序选择列

select coalesce(col3, 0) as col1,
coalesce(col2, 0) as col2,
coalesce(col1, 0) as col3,
col4
from your_table;

对于任何数量的列,都没有一种“好”的方法可以做到这一点。正如我在上一个问题中告诉您的,如果您有大量这样的列,那么您的数据库设计是错误的。它们应该在单独的行中,然后您可以编写不需要对每一列重复所有内容的查询。