ole*_*rio 1 postgresql order-by
我的数据库中有一个表,我使用以下标准存储日期:YYYY-MM-DD。正如你所看到的,我没有节省时间。第一次将同一个表导出到 csv 文件时,我按顺序获得了以下记录:
AAA@outlook.com
BBB@gmail.com
CCC@gmail.com
DDD@hotmail.com
Run Code Online (Sandbox Code Playgroud)
但是,当我运行相同的查询将数据导出到相同的 CSV 时,我按以下顺序收到了记录:
AAA@outlook.com
111@hotmail.com
222@gmail.com
333@gmail.com
Run Code Online (Sandbox Code Playgroud)
因此,我得出的结论是对数据进行排序,因为这可能是不确定的。不是吗?这是我从数据库导出数据的查询:
SELECT id AS "_id", cpf, email, name, agency, account, "createdDate" FROM "NextUsers", "Users" WHERE "userId"="Users".id ORDER BY "createdDate" OFFSET $1 LIMIT 500;
Run Code Online (Sandbox Code Playgroud)
其中 $1 从 0 开始,每次迭代都会增加 500。OBS:两个查询返回的数据均已正确排序,但顺序与您所看到的不同。
如果您要排序的日期中有重复值并且没有按任何其他列排序,则您获取它们的顺序将是任意的。
结果集1
email|date
aaa@gmail.com|2019-01-01
bbb@gmail.com|2019-01-01
ccc@gmail.com|2019-01-01
Run Code Online (Sandbox Code Playgroud)
结果集2
email|date
ccc@gmail.com|2019-01-01
bbb@gmail.com|2019-01-01
aaa@gmail.com|2019-01-01
Run Code Online (Sandbox Code Playgroud)
如果您只有按日期排序,数据库可以返回任一结果集,就像按日期字段排序一样,并在获取记录时提取记录,而不管顺序如何。
如果您需要结果中的顺序一致,则需要向顺序添加更多字段,直到可以获得一组更独特的字段来排序。
对于您的查询,我会将其更新为也按 _id 排序,这样您将获得一致的结果集
SELECT id AS "_id",
cpf,
email,
name,
agency,
account,
"createdDate"
FROM "NextUsers",
"Users"
WHERE "userId"="Users".id
ORDER BY "createdDate",
id
OFFSET $1
LIMIT 500;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
512 次 |
| 最近记录: |