【发布时间】:2022-01-08 13:31:33
【问题描述】:
有没有办法将选择查询存储到表中?我通常使用 WITH 语句 但这仅适用于 mysql 8+。我目前正在使用 mysql 5.1。因此,我尝试实现一个临时表,但不能在同一个查询中多次引用一个临时表(如下面的查询)。
CREATE TEMPORARY TABLE test
SELECT TIMESTAMPDIFF(MONTH, MAX(L.period), CURDATE()) as timediff, L.contractID
FROM license L GROUP BY L.contractID;
UPDATE `contract` AS C
SET C.valid = CASE
WHEN (SELECT timediff FROM test AS T WHERE T.contractID = C.contractID) < 1 THEN 2
WHEN (SELECT timediff FROM test AS T WHERE T.contractID = C.contractID) = 1 THEN 1
WHEN (SELECT timediff FROM test AS T WHERE T.contractID = C.contractID) > 1 THEN 0
END;
DROP TEMPORARY TABLE test;
【问题讨论】:
-
这里根本不需要临时表,只需使用 派生表 进行 license 查询并加入即可。跨度>
标签: mysql temp-tables