MySQL database

article到10行在price中, 但ordNum号是空的,因为我几年后添加的.

是否有一个设置ordNum,使每一个文章的价值从1n为它的价格? 例如,有3个价格的文章应该将其ordNum设置为123.

价格的顺序并不重要,但如果能考虑到这一点,它将是一个附加值.

Articles:

CREATE TABLE `article` (
    `id`   INT(11) NOT NULL,
    `name` TEXT    NULL DEFAULT NULL
);

Prices:

CREATE TABLE `price` (
    `id`          INT(11)     NOT NULL,
    `amount`      VARCHAR(24) NULL DEFAULT NULL,
    `article_id`  INT(11)     NULL DEFAULT NULL,
    `currency_id` INT(11)     NULL DEFAULT NULL,
    `ordNum`      INT(11)     NULL DEFAULT NULL
);

推荐答案

WITH cte AS (
  SELECT id, ROW_NUMBER() OVER (PARTITION BY article_id ORDER BY amount) AS ordNum
  FROM price
)
UPDATE price JOIN cte USING (id)
SET price.ordNum = cte.ordNum;

这需要MySQL 8.0来实现CTE和窗口功能.

ORDER BY只是一个例子,如果你愿意,你可以 Select 另一个订单.

Mysql相关问答推荐

—符号在哪里条件""

SQL中的搜索模式

Laravel DB::Transaction()

子查询是否可以按主查询中的列进行分组?

Mysql - Select 匹配某些条件的两条记录之间经过的最大天数

PythonAnywhere中SSH到MySQL数据库无限期挂起,SSH正确,workbench可以完美连接

SQL Select 最大值和平均值

MySQL 8.0 可以在 Select 语句中返回 JSON 对象数组吗?

MySQL - 如何根据单列查找重复行?

为生日创建 MySQL 索引

Mysql 中相同列的相关 2 查询

为什么order by子句可以利用索引?

使用 SET 变量进行 MySQL 查询

使用数据表的直方图(SQL 查询)

MySQL在定义表的位置后抛出错误

如何通过未知列中的唯一值有效地更新 MySQL 行

MariaDB 下的慢速更新、删除和插入查询

我如何决定何时使用右连接/左连接或内连接或者如何确定哪个表在哪一侧?

将 MySQL 数据库置于版本控制之下?

#1030 - 从存储引擎 Aria 收到错误 176读取错误校验和的页面