SQL查询,在一列中显示一个包含某些条件的2列表

SQL查询,在一列中显示一个包含某些条件的2列表,sql,Sql,这是我的表,有两列-字母和数字,我需要这样显示,以便只显示与第1列不同的列: A 1 A 2 A 3 B 4 B 5 C 6 您想做的有两个问题: 首先,第一列看起来像字符串,第二列看起来像数字。单个列只能有一种类型。 其次,SQL结果集和表表示无序集,除非使用order by。 这就是为什么这种操作通常在应用程序级别进行的两个原因 但你可以做到。以下是一种实际可行的方法: A 1 2 3 B 4 B 5 C 6 结果列必须是字符串 注:尽管union

这是我的表,有两列-字母和数字,我需要这样显示,以便只显示与第1列不同的列:

A  1  
A  2   
A  3  
B  4  
B  5  
C  6  

您想做的有两个问题:

首先,第一列看起来像字符串,第二列看起来像数字。单个列只能有一种类型。 其次,SQL结果集和表表示无序集,除非使用order by。 这就是为什么这种操作通常在应用程序级别进行的两个原因

但你可以做到。以下是一种实际可行的方法:

A
1
2
3
B
4
B
5
C
6
结果列必须是字符串

注:尽管union all在实践中是正确的,但它并不保证结果的顺序。更正确的版本是:

select 'A' union all
select col2 from t where col1 = 'A' union all
select 'B' union all
select col2 from t where col1 = 'B' union all
select 'C' union all
select col2 from t where col1 = 'C';

为什么是B两次?不过,通过一个联合很容易得到结果……您所需的输出已经列出了两次。您想要不同的唯一值吗?
select col
from (select 'A' as col, 1 as priority union all
      select col2, 2 from t where col1 = 'A' union all
      select 'B', 3 union all
      select col2, 4 from t where col1 = 'B' union all
      select 'C', 5 union all
      select col2, 6 from t where col1 = 'C'
     ) t
order by priority;