首页 > 解决方案 > 我怎样才能使用带数字的coloum才能找到日期的coloumn?

问题描述

我是 SQL 新手。我想按日期的另一列的顺序对数字列进行排序,我也想保存它。我只是不想要表格或报告。我想保存它

例如,我有一个包含以下列的表:

factorno     spdate            sc
    1        2019-10-06         1
    1        2019-10-07         2
    2        2019-10-08         2

现在我想像这样更新 factorno 列:

factorno     spdate            sc
    1        2019-10-06         1
    2        2019-10-07         2
    3        2019-10-08         2

请帮我

标签: mysqlsql

解决方案


这看起来像一个过于简单的问题,但您可以使用一个变量来生成一个新的 factorno

drop table if exists t;
create table t
(factorno  int, spdate  date, sc int);
insert into t values
(    1     ,   '2019-10-06'     ,    1),
(    1     ,   '2019-10-07'     ,    2),
(    2     ,   '2019-10-08'     ,    2);

update t join (select spdate,@rn := @rn + 1 rn from t cross join (select @rn:=0) r order by spdate) s
            on s.spdate = t.spdate
set factorno = s.rn 
where 1 = 1;

select * from t;

+----------+------------+------+
| factorno | spdate     | sc   |
+----------+------------+------+
|        1 | 2019-10-06 |    1 |
|        2 | 2019-10-07 |    2 |
|        3 | 2019-10-08 |    2 |
+----------+------------+------+
3 rows in set (0.01 sec)

如果您使用的是版本 8 或更高版本,则可以使用 row_number 函数。顺便说一句,存储在 sql 中的数据没有特定的顺序,你总是必须使用 ORDER BY 来按你想要的顺序获取数据,所以我看不到重建 factorno 有什么好处。


推荐阅读