gpt4 book ai didi

sql - SQL 过程中的排序顺序

转载 作者:行者123 更新时间:2023-12-04 01:42:35 26 4
gpt4 key购买 nike

查询-

SELECT B.TYPE,
B.TYPE_VAL,
B.COMP,
B.start,
B.end,
B.lt,
B.modify
FROM table B
WHERE B.start <= sysdate
AND B.end >= sysdate
AND TRIM(B.type_val) IN
('111-AAA')
ORDER BY B.type_val,
B.type,
B.comp DESC;

输出

+------+----------+------+-----------+------------+----+-----------------+
| TYPE | TYPE_VAL | COMP | START | END | LT | MODIFY |
+------+----------+------+-----------+------------+----+-----------------+
| AS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| AS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 68 | 3/8/2016 0:34 |
| BS | 111-AAA | ** | 6/16/2015 | 6/16/2015 | 7 | 6/16/2015 10:32 |
| CS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| CS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
| HS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| HS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
| MS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| MS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
| OS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| OS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
| PS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
| PS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| S | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| S | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
| VS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |
| VS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 13 | 3/8/2016 0:34 |
+------+----------+------+-----------+------------+----+-----------------+

如果您注意到提取的数据采用先最新数据再较旧数据的形式

例如对于 TYPE AS-

| AS   | 111-AAA  | **   | 5/10/2016 | 12/31/9999 |  1 | 5/10/2016 11:12 |
| AS | 111-AAA | ** | 3/8/2016 | 12/31/9999 | 68 | 3/8/2016 0:34 |

最新数据,即先是 5/10/2016,然后是 3/8/2016。(MM/DD/YY 格式)

但这里有一个异常(exception),对于 TYPE PS - 3/8/2016 高于 5/10/2016 与其他所有类型不同。

| PS   | 111-AAA  | **   | 3/8/2016  | 12/31/9999 | 13 | 3/8/2016 0:34   |
| PS | 111-AAA | ** | 5/10/2016 | 12/31/9999 | 1 | 5/10/2016 11:12 |

据我所知,如果排序顺序相同(TYPE、TYPE_VAL 和 COMP 相同,因此无需排序),最新的理想情况下应该位于顶部。

我的问题是 - 为什么这个特定的记录会以相反的顺序被拉出?难道不应该像所有其他百万条记录一样被提取吗?发生这种情况一定有一些特定的原因。

我知道你们大多数人都会提到 Oracle 没有特定的返回行的方式,但这里的情况并非如此。

最佳答案

如果您没有指定显式的ORDER BY,数据库基本上可以按照它认为合适的任何顺序返回行。此可以是插入顺序,但不一定是。

如果您还想对 start 列进行排序,请将其添加到 ORDER BY 中:

       ORDER BY B.type_val,
B.type,
B.comp DESC,
B.start;

关于sql - SQL 过程中的排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37435699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com