0

我想知道的是,如果您可以进行两个查询并将它们有序地表示在一个结果集中。

因此,在示例中,我们采用两个查询:

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 排序来轻松解决此示例。但我希望你看到这不是对许多其他条件的解决方案。

也许没有通用的方法,但是我不知道可以使用的所有功能,而且我在编写查询命令方面并不是很先进

谢谢你。

4

1 回答 1

2

您有 2 个选项:

  1. 使用CASE表达式按过滤条件排序 - 这适用于表相同且条件简单的情况。
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子句应使用ORnotAND组合 2 个查询。

  1. 利用UNION ALL
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;
于 2021-09-20T21:31:41.510 回答