堆栈查询结果在一个查询结果中,因此行的顺序取决于哪个部分 returns 哪个结果
Stack query results in one query result so the order of rows depends on which part returns which result
我想知道的是,您是否可以接受两个查询并将它们有序地表示在一个结果集中。
因此在示例中我们进行两个查询:
Select a.col1, a.col2 from a where a.col3 = 1 Order By a.col2
和
Select a.col1, a.col2 from a where a.col4 = 0 Order By a col2
我知道在这种情况下很容易将两个查询合并为一个:
Select a.col1, a.col2
from a
where a.col3 = 1 and a.col4 = 0 Order By a col2
但是结果行的顺序现在将在第一次和第二次查询之间混合。
而我正在寻找一种顺序,首先获得所有第一个查询结果,然后获得所有第二个查询结果
我还看到您可以通过按 col3 和 col4 排序轻松解决此示例。但我希望你明白这不是许多其他给定条件的解决方案。
也许没有通用的方法,但我不知道可以使用的所有功能,而且我在编写查询命令方面也不是很先进
谢谢。
您有 2 个选择:
- 使用
CASE
expression 按过滤条件排序 - 这在表格相同且条件简单的情况下有效。
select a.col1, a.col2
from a
where a.col3 = 1 or a.col4 = 0
order by
case when a.col3 = 1 then 1 else 0 end desc
, a.col2;
正如 dogyog 所指出的,这个 where
子句应该使用 OR
而不是 AND
来组合这两个查询。
select a.col1, a.col2, 0 QueryNum
from a
where a.col3 = 1
union all
select a.col1, a.col2, 1 QueryNum
from a
where a.col4 = 0
order by QueryNum asc, a.col2;
我想知道的是,您是否可以接受两个查询并将它们有序地表示在一个结果集中。
因此在示例中我们进行两个查询:
Select a.col1, a.col2 from a where a.col3 = 1 Order By a.col2
和
Select a.col1, a.col2 from a where a.col4 = 0 Order By a col2
我知道在这种情况下很容易将两个查询合并为一个:
Select a.col1, a.col2
from a
where a.col3 = 1 and a.col4 = 0 Order By a col2
但是结果行的顺序现在将在第一次和第二次查询之间混合。
而我正在寻找一种顺序,首先获得所有第一个查询结果,然后获得所有第二个查询结果
我还看到您可以通过按 col3 和 col4 排序轻松解决此示例。但我希望你明白这不是许多其他给定条件的解决方案。
也许没有通用的方法,但我不知道可以使用的所有功能,而且我在编写查询命令方面也不是很先进
谢谢。
您有 2 个选择:
- 使用
CASE
expression 按过滤条件排序 - 这在表格相同且条件简单的情况下有效。
select a.col1, a.col2
from a
where a.col3 = 1 or a.col4 = 0
order by
case when a.col3 = 1 then 1 else 0 end desc
, a.col2;
正如 dogyog 所指出的,这个 where
子句应该使用 OR
而不是 AND
来组合这两个查询。
select a.col1, a.col2, 0 QueryNum
from a
where a.col3 = 1
union all
select a.col1, a.col2, 1 QueryNum
from a
where a.col4 = 0
order by QueryNum asc, a.col2;