sql - Union 从排序表中选择
问题描述
我想同时从一个排序表中执行几个 SELECT。我的想法如下:
SELECT TOP 5 * FROM unsorted_table where parameter1 = 1 ORDER BY parameter2 DESC, paramter3 DESC, parameter4 ASC
UNION
SELECT TOP 5 * FROM unsorted_table where parameter1 = 2 ORDER BY parameter2 DESC, paramter3 DESC, parameter4 ASC
但由于 ORDER BY,它显然不起作用。我也试过这个,但没有成功:
SELECT TOP 5 * FROM (SELECT * FROM unsorted_table where where parameter1 = 1 ORDER BY parameter2 DESC, paramter3 DESC, parameter4 ASC)
UNION
SELECT TOP 5 * FROM (SELECT * FROM unsorted_table where where parameter1 = 2 ORDER BY parameter2 DESC, paramter3 DESC, parameter4 ASC)
如果我使用以下内容,正如在其他线程上推荐的那样,我没有得到我需要的东西,因为表格最后排序:
SELECT TOP 5 * FROM unsorted_table WHERE parameter1 = 1
UNION
SELECT TOP 5 * FROM unsorted_table WHERE parameter1 = 2
ORDER BY parameter2 DESC, paramter3 DESC, parameter4 ASC
另一个限制是,我不能创建新表。因此,将排序后的表保存在新表中并从中进行选择也不是一个选项。
解决方案
尝试使用子查询:
select * from
(SELECT TOP 5 * FROM unsorted_table WHERE parameter1 = 1
UNION
SELECT TOP 5 * FROM unsorted_table WHERE parameter1 = 2)a
ORDER BY parameter2 DESC, paramter3 DESC, parameter4 ASC
推荐阅读
- arduino - 如何像 Arduino Uno 的按钮一样使用旋转编码器
- typescript - 我如何在groupscore上对这个数组进行排序?
- emacs - 选择算术运算,例如 2 + 2 eval 并在 minibuffer 中回显结果
- java - 即使找到路径,BFS Maze Solver 也会返回 false
- android - 如何将预定通知添加到闹钟应用程序 - Flutter
- javascript - 如何在 window.onload 事件后使用 reactjs / nextjs 加载脚本
- python - Pandas 将两个 DataFrame 中单元格中的字符串与规则进行比较
- r - assign(x)、eval(parse(text = "x"))、get(x) 和 deparse(substitute(x)) 有什么区别?
- python - 谁能解释为什么这个列表配对代码不起作用
- teradata - TOAD 中的 Teradata 函数 IFACTIVITYCOUNT 和 LABEL