SQL:如何按字母顺序排列工会?

SQL:如何按字母顺序排列工会?,sql,Sql,诚然,这是一个有点奇怪的用例,但是如何按字母顺序排列这样一个简单的联合的结果呢 select name from Reviewer union select model from Car; 具有讽刺意味的是,在许多数据库中,查询将按字母顺序返回值。排序是在联合的重复删除过程中完成的 当然,你不能相信这一点。因此,您应该包含一个order by子句: select name from Reviewer union select model from Car order by name;

诚然,这是一个有点奇怪的用例,但是如何按字母顺序排列这样一个简单的联合的结果呢

select name 
from Reviewer
union
select model
from Car; 

具有讽刺意味的是,在许多数据库中,查询将按字母顺序返回值。排序是在
联合
的重复删除过程中完成的

当然,你不能相信这一点。因此,您应该包含一个
order by
子句:

select name 
from Reviewer
union
select model
from Car
order by name;

订单依据
适用于完整的
联合
。列名来自第一个子查询。

下面是如何设置
别名和
排序依据:

SELECT 
  name AS NameModel
FROM Reviewer
UNION
SELECT  
  model AS NameModel
from Car
ORDER BY 
 NameModel;
在您的sql:

select val
from (
  select name as val 
  from Reviewer

  union

  select model as val
  from Car
) as x
order by val
select name 
from Reviewer
union
select model
from Car;
答复1:

select name from Reviewer
union
select model from Car
order by name;
答复2:

select * from
    (select name "id" from Reviewer
    union
    select model from Car) x
order by x.id;
我的答案和上面的都是一样的。在SQL中,我们可以用不同的方式编写


我们也可以忽略作为操作员的

dupe:@Jeremy同意。当我在研究时,这个特定的问题没有出现,可能是因为我关注术语“字母顺序”。我所知道的大多数DBMS都会使用哈希算法来消除重复项,因此不会进行“排序”。联合中的两个别名必须相同吗?(或者至少在SQL Server中)@Gordon我熟悉order by
,只是没有意识到它可以以这种方式应用于整个联盟。看起来有点违反直觉,但仍然非常有用。@Jonathan这不是真正的最佳做法,但您也可以使用“order by 1”按结果集中的第一个字段排序。查询没有错。这两个别名不需要匹配。第二个问题完全被忽略了。联合中列的名称仅由SQL Server中的第一个选择项确定,别名不需要匹配。但是,数据类型确实是。信息的10倍-我不知道。
select val
from (
  select name as val 
  from Reviewer

  union

  select model as val
  from Car
) as x
order by val