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 Customer.C_Nationkey = Nation.N_nationkey 
  JOIN Region on Nation.N_regionkey = Region.R_regionkey 
Where
  Region.R_name = 'AFRICA'

我想按名称对我的输出进行排序,但我不知道为什么,因为我确实有 C_name 和 S_Name 作为输出?!

谢谢

最佳答案

如果您想要同一列中的所有数据,那么您可以在其周围放置一个SELECT,然后执行一个ORDER BY

    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

关于sql - 此声明更短/排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10281794/

相关文章:

php - 使用 Drupal 内容类型中的数据库自动完成字段

mysql - 加入两个选择语句

mysql - UPDATE 和 MIN SQL 查询

sql - 我可以通过转义单引号并用单引号包围用户输入来防止 SQL 注入(inject)吗?

sql - 打开 SQL Server Management Studio 并从 PowerShell 连接到服务器

sql - 嵌套查询 SQL

sql - SQLite:由两列索引的列的平均值

php - 从一张表中选择所有记录并检查它们是否在第二张表中常见

sql - 通过聚合连接一个表本身

MySQL查询优化: how can I speed up this query?