AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[order-by](dba)

Martin Hope
Stefmachine
Asked: 2023-04-07 03:26:31 +0800 CST

SQL 查询中 order by ASC 关键字的用途是什么?

  • 6

由于大多数(如果不是全部)SQL 的实现在省略时ASC默认在子句中使用该关键字。ORDER BY

关键字是否有有效的用例ASC?

我不是在寻求心理原因、意见、良好实践、可读性或围绕 SQL 编造的任何可以从一个人的角度改变到另一个人的观点的东西。

order-by
  • 1 个回答
  • 69 Views
Martin Hope
Florent2
Asked: 2022-10-21 04:22:07 +0800 CST

如何在 BigQuery 中排序字符串以在大写字符之前排序小写字符?

  • 5

我正在更新一个报告工具实现,以便它查询 BigQuery 而不是 PostgreSQL。PostgreSQL 数据在 BigQuery 中提取。一项要求是报告结果在此更新后保持完全相同,即报告查询在 BigQuery 上运行时应输出与在 PostgreSQL 上完全相同的结果。

特别是,我需要 BigQuery 以与我的 PostgreSQL 服务器当前相同的方式对字符串进行排序。不能更改我的 PostgreSQL 服务器对字符串的排序方式。

例如,使用此表:

姓名 ID
活动 1
活动 2
活动 3
富 4

和查询

SELECT name FROM table ORDER BY name, id

我的 PostgreSQL 返回

活动, 活动, 活动, foo

而 BigQuery 返回

活动,活动,活动,foo

我试过了

SELECT name FROM table ORDER BY NORMALIZE_AND_CASEFOLD(name), id

但 BigQuery 会返回

活动, 活动, 活动, foo

order-by
  • 1 个回答
  • 25 Views
Martin Hope
Erwin Brandstetter
Asked: 2022-09-13 15:50:54 +0800 CST

UNION ALL 子句的结果是否总是按顺序附加?

  • 4

根据标准 SQL UNION/UNION ALL不保证任何特定的排序顺序没有外部ORDER BY子句 - 就像 SQL 中几乎没有任何地方可以保证排序顺序没有ORDER BY.

但是,Postgres 对 的普通情况使用“追加”步骤UNION ALL,因此第一条腿的结果(即使在它们的分区中未排序)总是在下一条腿之前,等等。Postgres 只是按照给定的顺序附加来自每条腿的结果。这与一个LIMIT子句特别相关:

SELECT 1 FROM tbl  -- or any complex query
UNION ALL
SELECT 2
LIMIT  1

显然,这不适用于UNION(没有ALL)。但除此之外,我从未见过 Postgres 乱序返回,即上述查询中的“2”SELECT ,而第一个也会返回行。即使第一站非常昂贵,也不是。

我过去曾基于此行为的查询。现在我遇到了一个说法,Postgres 可能会在这里返回乱序的行,但没有得到实际证据的证实。

当前的Postgres 手册对此事有这样的说法:

UNION有效地将结果附加到query2结果query1(尽管不能保证这是实际返回行的顺序)。此外,它从结果中消除重复行,与使用 , 的方式 DISTINCT相同UNION ALL。

这很不清楚。引用的顺序是否适用于SELECT子句列表,或每个子句中的行,还是仅适用于返回的集合?此外,UNION ALL仅在第二句中提及,因此尚不清楚最重要的第一句是否应该适用于UNION ALL...

任何人都可以举一个例子,其中行被乱序返回,破坏了UNION ALL子句的顺序?在任何版本的 Postgres 中。(即使最新版本最有趣。)

如果不是这样,是否有理由相信这可能会在未来的版本中发生变化?

ORDER BY不是这里的直接问题。问题是多个UNION ALL子句是否返回给定序列中的行(之前LIMIT可以启动并阻止进一步的分支执行)。

postgresql order-by
  • 2 个回答
  • 140 Views
Martin Hope
user4095519
Asked: 2022-07-12 00:36:14 +0800 CST

获取最新 25000 个条目的第一个 id?

  • 1

我有一个包含 200000 行的数据库。在这 200000 行中,我想要最新的 25000,而我需要最旧的 id(列 entity_id)。

到目前为止,这是我的查询:select * from sales_flat_order order by entity_id desc limit 25000;

这已经永远运行了。有没有更好的办法?也许在位置 25000 上获取 entity_id 更容易,但必须订购,我需要在最新条目的位置 25000 上拥有 id。

这是表的创建语句:https ://pastebin.com/mrY7CTP8

谢谢!

mysql order-by
  • 1 个回答
  • 26 Views
Martin Hope
HeyJude
Asked: 2021-12-20 02:40:02 +0800 CST

按零排序如何工作

  • 2

在以下脚本中(请参阅此处的完整演示):

SELECT *
FROM Table1
ORDER BY 
   CASE WHEN Field1 IS NOT NULL 
     THEN 0 
   END
  • 的类型是0什么?
  • 是如何0解释的?不是选择列表中列的序号,因为选择列表枚举是从 1 开始的,而不是 0。那么它是什么?

为了详细说明,将上面的代码段与以下代码段进行比较,它会发出错误:

SELECT *
FROM Table1
ORDER BY 0  

ORDER BY 位置编号 0 超出了选择列表中的项目数范围。

并将其与以下代码段进行比较,该代码段会发出另一个错误:

SELECT *
FROM Table1
ORDER BY '0'

在 ORDER BY 列表的位置 1 中遇到常量表达式。

似乎将0值嵌套在case子句下使它起作用,但我不明白为什么以及如何?

  • 这个问题在某种程度上是这个旧问题的后续问题,与我上面列出的替代方案相比,它没有解释为什么它可以工作: 如何使用 order by 0 工作 SQL?
sql-server order-by
  • 3 个回答
  • 1155 Views
Martin Hope
Trevor Wood
Asked: 2021-10-11 03:56:56 +0800 CST

订购保存为 varchar 的大数

  • 2

据我所知,无符号 bigint 是 mysql 中的最大 int 大小。因此,为了更好地衡量,我使用 varchar(255),因为我的数据库中的某些值大于无符号 bigint。

我想订购它们,就好像它们是 int 一样。这可能吗?

示例:999,1000,1001

通过 Int 订购此产品为 999,1000,1001 或 1001,1000,999

通过 varchar 订购此内容为 1000,1001,999 或 999,1001,1000

由于通过 varchar 排序一次比较一个字符串

我想知道是否可以通过 varchar 存储它,但排序类似于 int

mysql order-by
  • 3 个回答
  • 874 Views
Martin Hope
Héctor
Asked: 2021-08-28 01:49:34 +0800 CST

区分大小写不一致

  • 3

我正在尝试学习和理解排序规则以及 postgresql 如何比较和排序字符串,但我发现不协调,我不知道我错过了什么。

查询:

SELECT datname, datcollate FROM pg_database;

返回我的所有数据库都使用 en_GB.UTF-8 排序规则。

和查询:

SELECT table_schema, 
   table_name, 
   column_name,
   collation_name
FROM information_schema.columns
WHERE collation_name is not null
ORDER BY table_schema,
     table_name,
     ordinal_position;

返回所有列都有“C”排序规则,这意味着(根据我的研究)没有指定排序规则。所以,我假设使用了数据库排序规则,不是吗?

编辑:我的错误在这里。上一个查询不会为所有列返回结果,仅对那些collation_name不为空的列返回结果,具有空排序规则的列是继承数据库排序规则的列。所以我认为 foo.bar 列有C排序规则,但null实际上是。

好吧,当我运行查询时出现了不一致:

SELECT "name" FROM foo.bar ORDER BY "name" ASC;

其中“名称”列数据类型是文本,而 foo.bar 是用户创建的 schema.table 组合。结果它就像人类一样按字母顺序排列。从 a/A 到 Z/z,不管是大写还是小写。

但是,如果我运行以下查询:

SELECT "table_name"
FROM information_schema.tables
WHERE
    "table_name" ~ 'some_pattern'
    AND table_schema = 'foo'
    AND table_type = 'BASE TABLE'
ORDER BY "table_name" ASC;

它以类似机器的方式对结果进行排序,逐字节比较,因此在小写之前排序大写。

为什么会有这种差异?我已经看到“table_name”列数据类型不是“文本”而是“名称”,但我找不到它是否有事可做。

将数据库排序规则设置为 en_GB.UTF-8 不足以以人类的方式比较文本?

谢谢你的时间。

postgresql order-by
  • 1 个回答
  • 99 Views
Martin Hope
Daniel Rearden
Asked: 2021-06-19 04:50:04 +0800 CST

通过重复模式对行进行排序

  • 4

给定 Postgres 中的表,例如

CREATE TABLE t1 (
  type text NOT NULL,
  value int NOT NULL
)

where typecould be A, Bor Cand 给定一个任意的重复模式,比如

A B B C B B

如何查询表,以便结果首先根据模式排序,然后根据值排序?换句话说,第一行是A最低value的,第二行是B最低value的,第三行是B第二低的value,依此类推。如果我们用完了特定的类型,我们就继续前进到模式中的下一个字母(即,如果我们没有更多C的 s 要返回,模式就变成ABBBB)。

类型 价值
一个 1
乙 1
乙 2
C 1
乙 3
乙 4
一个 2
乙 5
乙 6
乙 7
乙 8
一个 3
乙 9

实际模式是动态的并且具有任意长度,认为它总是被限制为只有type.

这是一个样本数据的小提琴。

postgresql order-by
  • 1 个回答
  • 112 Views
Martin Hope
Arturo Gonzalez
Asked: 2021-05-27 02:50:47 +0800 CST

更改列值但在 MySQL 中保持顺序

  • 1

让我们考虑一下我有一张桌子:

CREATE TABLE student (
id int,
 name varchar(128)
);

INSERT INTO student (id,name) VALUES
(1,'John'),
(2,'Bob'),
(3,'Alice'),
(4,'Don'),
(5,'Eve');

我需要“名称”列与下一个交换位置:1 与 2、3 与 4 等,但保持“id”的顺序。选择的输出应该是这样的:

id  names
1 | Bob
2 | John
3 | Don
4 | Alice
5 | Eve

有没有一种有效的方法来编写可以给我预期结果的查询?

mysql order-by
  • 3 个回答
  • 76 Views
Martin Hope
alexandre9865
Asked: 2021-04-29 17:00:38 +0800 CST

根据 SQLite 中的 list_order 对具有路径索引的嵌套表进行排序

  • 1

我有一个具有这种嵌套结构的 SQL 表:

CREATE TABLE items (`id` INTEGER, `item_name` VARCHAR(6), `parent_id` INTEGER, `list_order` INTEGER);

我的 SQLite 版本不支持窗口函数,目前我在链接SQLite 查询中的查询返回结果如下,但它不是根据 list_order 排序的,另一个细节是 list_order 列可能所有值都为零。

   id      name_item   parent_id  level  path_index list_order
---------------------------------------------------------------
   1        Pois           0          0     1           4
   2        Então          0          0     2           5
   3        Teste          0          0     3           3
   11       Teste 3        3          1     3.1         2
   12       Teste 2        3          1     3.2         0
   13       Teste 1        3          1     3.3         1
   4        Fundo          0          0     4           2
   7        Profundo       4          1     4.1         1
   8        Dhdhd          4          1     4.2         0
   9        Gagagaga       8          2     4.2.1       1
   10       Fsfsfsfs       8          2     4.2.2       0
   5        Profundo       0          0     5           1
   6        Gigante        0          0     6           6
   14       Teste          0          0     7           0

我希望 path_index 列遵循 list_order 和 level 列,如下所示:

   id      name_item   parent_id  level  path_index list_order
---------------------------------------------------------------
   14       Teste          0          0     1           0
   5        Profundo       0          0     2           1
   4        Fundo          0          0     3           2
   8        Dhdhd          4          1     3.1         0
   10       Fsfsfsfs       8          2     3.1.1       0
   9        Gagagaga       8          2     3.1.2       1
   7        Profundo       4          1     3.2         1
   3        Teste          0          0     4           3
   12       Teste 2        3          1     4.1         0
   13       Teste 1        3          1     4.2         1
   11       Teste 3        3          1     4.3         2
   1        Pois           0          0     5           4
   2        Então          0          0     6           5
   6        Gigante        0          0     7           6

如何对齐根据 list_order 和 level 列排序的 path_index?

sqlite order-by
  • 1 个回答
  • 116 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve