gpt4 book ai didi

mysql - 将子查询分离到它自己的 SELECT 语句中

转载 作者:行者123 更新时间:2023-11-29 00:55:40 24 4
gpt4 key购买 nike

我正在处理一些旧代码(不是我的),我需要优化以下查询,因为它需要很长时间才能完成。我猜是子查询导致的

UPDATE topic a, cycle c
SET a.cycleId = c.id
WHERE a.id = 1
AND ((c.year * 100) + c.sequence) = (
SELECT MIN((`year` * 100) + sequence)
FROM cycle c2
WHERE c2.groupId = a.groupId)

我曾考虑在更新语句之前在单独的查询中选择 cycleId (c.id),但我在分离它时遇到了问题。到目前为止,我有以下内容,但我还没有考虑 (c.year * 100) + c.sequence) 并且必须说实话,我不确定它在做什么!

SELECT c.id
FROM cycle c
LEFT JOIN topic a ON c.groupId = a.groupId
WHERE a.id = 1;

最佳答案

这是我暂时的解决方法。从以下位置获取结果:

SELECT MIN((`year` * 100) + sequence)
FROM cycle c
INNER JOIN topic a ON c.groupId = a.groupId
WHERE a.id = 1;

并在主查询中使用:

UPDATE topic a, cycle c
SET a.cycleId = c.id
WHERE a.id = 1
AND ((c.year * 100) + c.sequence) = [result]

关于mysql - 将子查询分离到它自己的 SELECT 语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6277634/

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