如何在SQL中将多列合并为一列?附表单数据场景需求
解决方案:合并多列唯一有效值并排序
这里有两种实用的SQL方案来实现你需要的视图,完全匹配你的需求场景:
方案一:使用COALESCE函数(推荐)
因为题目明确说明Col1、Col2、Col3仅有一列存在有效值,COALESCE函数可以完美适配这个场景——它会依次检查传入的列,返回第一个非空的值。
SELECT Name, COALESCE(Col1, Col2, Col3) AS Col FROM YourTableName -- 替换成你的实际表名 ORDER BY Col;
这个语句会直接提取每行里唯一的有效值作为Col列,最后按Col的数值排序,和你给出的示例输出完全一致。
方案二:使用CASE语句(兼容所有数据库)
如果你的数据库对COALESCE支持有限,可以用CASE语句来实现相同逻辑,逐个判断哪一列有非空值并返回:
SELECT Name, CASE WHEN Col1 IS NOT NULL THEN Col1 WHEN Col2 IS NOT NULL THEN Col2 WHEN Col3 IS NOT NULL THEN Col3 END AS Col FROM YourTableName -- 替换成你的实际表名 ORDER BY Col;
这个写法逻辑更直观,适合需要明确判断条件的场景,同样能得到你想要的结果。
内容的提问来源于stack exchange,提问作者Winston
相关产品推荐
相关产品推荐

