我有一个查询使用聚合函数将maximum absolute
的值分配给表中的另一列。问题是需要很长时间(约10-15秒)来查询完成时间。这是查询的样子:聚合到'普通'查询
UPDATE calculated_table c
SET tp = (SELECT MAX(ABS(s.tp))
FROM ts s INNER JOIN tc t ON s.id = t.id
GROUP BY s.id);
其中id
不是唯一的,因此是分组。 tp
是一个数字整数字段。下面是表的样子:
TABLE ts
PID(primary) | id (FKEY) | tp (integer)
--------------------+-----------------------------+------------------------------------------------------
1 | 2 | -100
2 | 2 | -500
3 | 2 | -1000
TABLE tc
PID(primary) | id (FKEY)
--------------------+-----------------------------+-------------------------
1 | 2
我希望输出的样子:
TABLE c
PID(primary) | tp (integer)
--------------------+-----------------------------+--------
1 | 1000
我试图使它像这样的工作:
UPDATE calculated_table c
SET tp = (SELECT s.tp
FROM ts s INNER JOIN tc t ON s.id = t.id
ORDER BY s.tp DESC
LIMIT 1);
虽然提高了性能,但结果是不正确的..任何帮助将不胜感激?
可以TP是一个正的值Δα –
你有没有适当的ID ID和TC ID? – scaisEdge
@MaheshMadushanka是..我有ID的 – faizanjehangir