gpt4 book ai didi

mysql - 比较一列数据后更新一列数据

转载 作者:行者123 更新时间:2023-11-30 22:59:09 25 4
gpt4 key购买 nike

我有一个包含两列的表格

NAME     SYNONYM
----------------
A ALPHA
B ALPHA
B BITA
C GAMA
D DELTA
E BITA

我正在寻找将检查列 SYNONYM 的 SQL 查询。如果它找到相同的 SYNONYM,例如,它在第二行中找到与第一行相同的 ALPHA,它将更改 B 并使其成为 A。B 的更改将发生在 NAME 列的任何地方,而不仅仅是一行。

NAME     SYNONYM  
----------------
A ALPHA
A ALPHA
A BITA
C GAMA
D DELTA
A BITA

如果很难更改 NAME 列,我们可以像这样添加一个新列

NAME    SYNONYM       NEW 
----------------------------
A ALPHA 1
B ALPHA 1
B BITA 1
C GAMA 2
D DELTA 3
E BITA 1

最佳答案

注意:如果它应该是一个动态查询,这种类型的查询在直接 MySQL 中是不可能的......MySQL 支持递归查询......但是如果您知道要更新的列,然后您可以以迂回的方式执行此查询。因此,如果您想更新某些列,您可以这样做,它会完全按照您的要求进行操作。

编辑:

如果您使用用户定义的变量,您可以像这样浏览表格:

SET @A := (SELECT DISTINCT name FROM example_table ORDER BY name LIMIT 0,1);

UPDATE example_table et,
(
SELECT
DISTINCT synonym
FROM example_table
WHERE name IN
(
SELECT
DISTINCT name
FROM example_table
WHERE synonym IN
(
SELECT
DISTINCT synonym
FROM example_table
WHERE name = @A
)
)
) t
SET et.name = @A WHERE et.synonym = t.synonym;

您所要做的就是在 SET @A 语句中增加 0.. LIMIT 0,1... LIMIT 1,1.... 每次执行时都会给您一个新的不同名称更新。希望有帮助

关于mysql - 比较一列数据后更新一列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24812769/

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