Sql 此声明较短/按顺序

Sql 此声明较短/按顺序,sql,Sql,我能把这句话写短一点吗 Select S_name from Supplier JOIN Nation ON Supplier.S_nationkey = Nation.N_nationkey JOIN Region on Nation.n_regionkey = region.R_regionkey Where Region.r_name = 'AFRICA' Union Select C_name from Customer JOIN Nation ON

我能把这句话写短一点吗

Select S_name 
from 
  Supplier
  JOIN Nation ON Supplier.S_nationkey = Nation.N_nationkey 
  JOIN Region on Nation.n_regionkey = region.R_regionkey 
Where
  Region.r_name = 'AFRICA' 
Union
Select C_name
from 
  Customer 
  JOIN Nation ON Customer.C_Nationkey = Nation.N_nationkey 
  JOIN Region on Nation.N_regionkey = Region.R_regionkey 
Where
  Region.R_name = 'AFRICA'
我想按名称对输出进行排序,但我不知道为什么,因为我有C_名称和S_名称作为输出


谢谢

至于order by子句,请尝试

ORDER BY 1

在查询结束时

如果希望所有数据都在同一列中,则可以在其周围放置一个
选择
,然后按进行排序

    Select S_name As Names
    from Supplier 
    JOIN Nation 
        ON Supplier.S_nationkey = Nation.N_nationkey 
    JOIN Region 
        on Nation.n_regionkey = region.R_regionkey 
    Where Region.r_name = 'AFRICA' 
    Union
    Select C_name As Names
    from Customer 
    JOIN Nation 
        ON Customer.C_Nationkey = Nation.N_nationkey 
    JOIN Region 
        on Nation.N_regionkey = Region.R_regionkey 
    Where Region.R_name = 'AFRICA'
    ORDER BY Names
如果不需要同一列中的数据,则可以这样做:

Select S_name, c.C_name
from Supplier 
JOIN Nation 
    ON Supplier.S_nationkey = Nation.N_nationkey 
JOIN Region 
    on Nation.n_regionkey = region.R_regionkey 
JOIN Customer c
    on Nation.N_nationkey = c.C_Nationkey
Where Region.r_name = 'AFRICA' 
ORDER BY S_name, c.c_name

您使用的是什么数据库管理系统?(mssql、mysql或oracel)?如果您希望S_name和C_name一起在一列中输出,则不能真正缩短它。考虑使用<代码>联合所有< /代码>,以使结果不被重复,然后只向它们添加别名>代码> SyNEX,作为名称< /COD> <代码> CyNeX作为名称< /C> >按代码< >按名称< /Cord>排序。在EndUn中,您不需要外部<代码>选择< /COD>或括号。代码>选择。。。联合选择。。。按姓名排序就行了。