桌子:
测试1

id1 | name1
1   |  a
2   |  s
3   |  d
4   |  t
5   |  z

测试2
id2 | name2
1   |  c
2   |  b
3   |  e
4   |  k
5   |  x

需要编写查询以按字母顺序生成输出
a
b
c
d
e
k
s
t
x
z

这是可能的吗?只使用sql查询,不使用代码。

最佳答案

试试这个:

Select name
from (select name1 as name from test1
      union
      select name2 as name from test2
) b order by name

这里的内部子查询返回两个表并集的结果,然后将结果设为临时表b。然后可以从按名称排序的临时表中选择名称。
感谢@Thorsten Kettner的更新,可以在不使用子查询的情况下轻松完成上述功能:
select name1 as name from test1
union all
select name2 as name from test2
order by name

编辑:使用union all来保存副本,这样也会更快。

10-04 21:38
查看更多