【问题标题】:Update id value in table using cursors in MySQL使用 MySQL 中的游标更新表中的 id 值
【发布时间】:2017-08-14 14:04:38
【问题描述】:

我有一个名为 sample 的表,其内容如下,但有 100 个条目。

+----+----------------+-------------+
| id | title          | status      |
+----+----------------+-------------+
|  0 | Abcd           | active      |
|  0 | Alsd           | active      |
|  0 | Asad           | inactive    |
|  0 | Awer           | active      |
|  0 | Awer           | active      |
+----+----------------+-------------+

我想更新它并为每个标题分配一个从 101 开始的唯一 ID。 所以,它看起来像下表 -

+-----+----------------+-------------+
| id  | title          | status      |
+-----+----------------+-------------+
| 101 | Abcd           | active      |
| 102 | Alsd           | active      |
| 103 | Asad           | inactive    |
| 104 | Awer           | active      |
| 105 | Awer           | active      |
+-----+----------------+-------------+

如何使用 sql 游标来做到这一点?

【问题讨论】:

  • MySQL MS SQL Server
  • 这听起来像是一个身份列的工作。
  • 首先弄清楚您使用的是哪个 RDBMS。标题是否按字母顺序排列?
  • 标题按字母顺序排列。

标签: mysql sql-server cursors


【解决方案1】:

您可以使用 Row_Number 如下:

Update d
    Set Id = Nid
    from ( Select *, Nid = 100 + Row_number() over(order by title) 
            from #data ) d

【讨论】:

  • 它给出了一个错误You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'from ( Select *, Nid = 100 + Row_number() over(order by title) fro' at line 3
  • 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 3 行的“from (Select *, Nid = 100 + Row_number() over(order by title) fro”附近使用正确的语法
猜你喜欢
  • 2012-10-02
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
相关资源
最近更新 更多