【问题标题】:Use a specific column for ordering table为排序表使用特定列
【发布时间】:2021-08-27 06:22:06
【问题描述】:

我的帖子数据库中有一个类别表,我想为它们制定特定的顺序,因此当我尝试插入新记录时,不必将其存储在表的末尾。

最好的方法是什么?

【问题讨论】:

  • “存储在最后”是什么意思?它是插入语句中的最后一列,还是您在提取数据时谈论行的顺序?
  • 您甚至不知道该行的存储位置,由 dbms 决定。使用 ORDER BY 按所需顺序选择数据。
  • 是的,我说的是检索数据的顺序,我只是想按特定列对检索到的数据进行排序。插入新行时无需更新订单值。
  • 假设我们有一个包含用户名和行顺序的表,名称 |订购约翰 | 1 妮可 | 2 但这里的问题是当我想在第一个和第二个之间插入一个新行时。
  • 更大的挑战是如何在不需要更新数据的情况下解决这个问题。

标签: sql database sorting sql-order-by columnsorting


【解决方案1】:

行和列的顺序对 DBMS 来说并不重要。行不存储在最后,没有order by 的select 不保证行的顺序。即使数据可以按顺序存储在文件中,由于并行执行,结果也不是有序的。

如果您想获得有序数据集,请在查询中使用ORDER BY

【讨论】:

  • 这绝对不是我的问题,我只是想按特定顺序获取数据
  • 好的,我可以使用 order by,但是有什么用?我有一个订单列,其中包含从 1 到 n 的值,每一行都有一个订单号,如果我尝试将最后一行放在数据的顶部会发生什么?这是我的问题。
  • @MhdMazenAl-Samman 这是什么意思:“如果我尝试将最后一列放在数据的顶部”请解释它应该如何排序
  • @MhdMazenAl-Samman select column1, ...columnN from tablename ORDER BY column, column - 这是获取有序数据的方法。如何存储并不重要,重要的是您选择时如何订购
【解决方案2】:

如果你想对提取的数据进行排序,那么你应该使用 order by 子句

SELECT Name, Order
FROM MyTalbe
WHERE ...
ORDER BY Order

Col1 是您的列,数字从 1 到 N

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-28
    • 2020-05-28
    • 2017-04-08
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多