gpt4 book ai didi

mysql - 目标表不可更新?使用 ORDER BY 创建序列列

转载 作者:行者123 更新时间:2023-11-30 23:13:16 25 4
gpt4 key购买 nike

我正在输入以下查询,但收到一条错误消息,指出该表不可更新?

SET @rownumber = 0;
UPDATE (
SELECT _atc_codes.se, diagnoses.*
FROM diagnoses
JOIN _atc_codes
ON (_atc_codes.id = diagnoses.atc_code)
ORDER BY _atc_codes.se, diagnoses.year, diagnoses.county, diagnoses.age_group, diagnoses.gender) AS b
SET b.base_order_index = (@rownumber:=@rownumber+1)

我想要实现的是通过添加一个序列列来加快查询速度,我可以根据该列对结果进行排序,而不是对多个列进行排序。它基于涉及 5 列的 ORDER BY 子句,其中一列来自 JOINed 表。

最佳答案

如果您正在寻找自动增量,请按照以下示例操作。如果您不关心速度,只需将表替换为您的子查询

SELECT mycols, @n := @n + 1 AS rownum
FROM MYTABLE , (SELECT @n := 0) as rownumstart

获取您的订单:

step1 添加要加入的rownum

step2 通过以正确的顺序将它与我们对同一表的子查询连接更新表,将 table.rownum 与 subquery.new_rownum 连接

ALTER MYTABLE ADD rownum int (11) unsigned NULL DEFAULT NULL;

UPDATE MYTABLE ,

(SELECT @n := 0) AS ALIAS
SET rownum=@n := @n + 1 ;


UPDATE TABLE
INNER JOIN
(SELECT ordered.*, @n := @n + 1 AS rownum
FROM
(SELECT WITH your
ORDER WITHOUT rid
FROM TABLE) AS ordered,

(SELECT @n := 0) AS ALIAS) ordered_with_rownum ON ordered_with_rownum.rownum=TABLE.rownum
SET TABLE.columnA=ordered_with_rownum.columnA,
TABLE.columnB=ordered_with_rownum.columnB ....

关于mysql - 目标表不可更新?使用 ORDER BY 创建序列列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19002510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com