【问题标题】:SQL-Server/Access - Order BY 1,2?SQL-Server/Access - 按 1,2 排序?
【发布时间】:2011-09-20 13:43:17
【问题描述】:

今天遇到一个问题,

SELECT col1,'yes' as col2  FROM myTable  
   WHERE col2=TRUE  
UNION  
SELECT col1,'no' as col2 FROM mytable  
   WHERE col2=FALSE  
ORDER BY 1,2  

我认为它会按第一列然后第二列排序,但由于涉及 UNION,我有点不确定有人可以解释这个查询的确切含义

【问题讨论】:

  • 您的意思是包含 Access 是有原因的吗?您对哪个 RDBMS 执行查询?
  • 好吧,除了你的问题,我自己也有一个,你为什么要这样?当然SELECT col1, CASE WHEN col2 = TRUE THEN 'yes' ELSE 'no' END as col2 FROM mytable ORDER BY 1, 2 会更好,不是吗?
  • @Lasse:一般来说,您建议的查询并不完全等同于OP。如果col2 可以为空并且确实包含空值,那么您的和OP 的两个查询将返回不同的结果。但基本上你的观点当然很好。
  • @Andriy 同意,我根本没有考虑 NULL,在这样的解决方案中必须考虑到这一点。

标签: sql-server sql-order-by


【解决方案1】:

SQL Server 会将结果合并在一起(这是隐含的 select distinct),然后按 col1 然后 col2 对结果进行排序。在联合查询中,您可以在最终选择上放置 ORDER BY,这将对最终结果进行排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多