gpt4 book ai didi

sql - 使用同一表上的选择更新行

转载 作者:行者123 更新时间:2023-12-02 01:58:26 25 4
gpt4 key购买 nike

我正在尝试使用同一表查询更新行。上下文:

ID        |  LANG       |  TEXT
----------------------------------
1 | EN | Hello
1 | FR |
1 | ES |
2 | EN | Boat
2 | FR | Bateau
2 | ES |

我想要:对于每一行;如果文本为空;使用具有相同 ID 且 LANG = 'EN' 的行的 TEXT 值更新它。

执行类似操作的 SQL 请求是什么?

最佳答案

您没有指定数据库。以下是标准SQL:

UPDATE t
SET TEXT = (SELECT text
FROM t t2
WHERE t.id = t2.id AND LANG ='EN' AND
TEXT IS NOT NULL
)
WHERE TEXT IS NULL;

如果出现重复,则应执行以下操作:

UPDATE t
SET TEXT = (SELECT max(text)
FROM t t2
WHERE t.id = t2.id AND LANG ='EN' AND
TEXT IS NOT NULL
)
WHERE TEXT IS NULL;

编辑:

当然,并非所有数据库都支持所有 ANSI 标准功能。在 MySQL 中,您可以使用 join 来代替:

UPDATE t JOIN
(SELECT id, max(text) as text_en
FROM t t2
WHERE LANG ='EN' AND TEXT IS NOT NULL
) ten
ON t.id = ten.id
SET t.TEXT = ten.text_en
WHERE t.TEXT IS NULL;

关于sql - 使用同一表上的选择更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25266878/

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