【发布时间】: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,在这样的解决方案中必须考虑到这一点。