【问题标题】:What would be the best way to sort out a series of numbers (ids) in SQL [closed]在SQL中整理一系列数字(id)的最佳方法是什么[关闭]
【发布时间】:2012-12-28 00:48:45
【问题描述】:

我在数据库中有以下系列:

9, 10, 10, 12, 12, 13, 15, 15, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28

而且我想让它们都独一无二(因为它们应该是)。谁能建议解决这个问题的最佳方法是什么? 使用 php 代码是可以的(也是首选),但我不能手动执行此操作,因为我的数据库中有数百万行。 为了更清楚一点,生成的系列应该如下所示:

9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30

【问题讨论】:

  • 而假定使用的 SQL 查询是......?
  • 你试过什么?另外,一些基本的 sql 教育: 1. 如果它们是主键,它们无论如何都是不同的;所有 dbms 都强制执行,2. 你看过 distinct 关键字吗?3. 你看过唯一性约束吗?
  • DISTINCT... ORDER BY....
  • 我看不出那个编辑比原来的更好......一个序列或系列更好地呈现在内
  • 创建一个for 循环并从8 到31 循环。或者一个数组foreach。将您的查询放入循环中并输入索引数据

标签: php sql math logic


【解决方案1】:

有几种简单的方法可以做到这一点:

SELECT DISTINCT the_number_column
FROM your_table
ORDER BY the_number_column;

或者:

SELECT the_number_column
FROM your_table
GROUP BY the_number_column
ORDER BY the_number_column;

最小的性能差异(至少对于 Oracle):http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:32961403234212

【讨论】:

  • 感谢 Elliot,如果您仔细注意到,旧的重复 id 需要更新为新的 id。例如 - 15, 18, 18, 18 需要是 15, 16, 17, 18
  • 表格第一行的这些 ID 是否会从 1 开始?在您的示例中,它从 9 开始。没有太大意义。如果列表后面的数字有差距怎么办?
【解决方案2】:

您可以使用 sql 选择所有唯一的记录

select distinct column from table order by column;

【讨论】:

  • 发帖的时候一定已经写好了
猜你喜欢
  • 2010-11-16
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 2010-12-21
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
  • 2014-03-12
相关资源
最近更新 更多