【发布时间】:2021-11-14 13:11:43
【问题描述】:
我想知道的是,您是否可以接受两个查询并将它们有序地表示在一个结果集中。
所以在示例中我们进行两个查询:
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 排序来轻松解决此示例。但我希望你能看到,这并不能解决给定的许多其他条件。
也许没有通用的方法,但我不知道可以使用的所有功能,而且我在编写查询命令方面并不是很先进
谢谢。
【问题讨论】:
-
您的组合尝试在逻辑上不正确 - 您看到了吗?您是否也意识到可以在两个结果集中出现同一行?在这种情况下,您期望什么?请不要仅仅放弃这永远不会发生的想法。如果你想假设,那么明确假设并记录在你的查询代码中(cmets 很有用),以便其他人可以在它失败时知道你的假设。
-
正确的“and”必须是“or”。如果可能出现在两个查询结果中的行应该在组合结果中出现两次。如果不是,我不知道它会发生什么,但我认为无论哪种方式它都不会产生任何问题,除非它使解决方案变得不可能。
标签: sql sql-server tsql syntax multi-query