gpt4 book ai didi

MySQL - 如何存储 GROUP BY 的结果以便在重复键更新中使用

转载 作者:行者123 更新时间:2023-11-29 08:38:28 25 4
gpt4 key购买 nike

如何解决以下查询?我尝试将 SELECT 查询的结果别名到表 tmp 中,但没有成功。

INSERT INTO vote_counts (list_id, node_id, num_down_votes) 
(SELECT vl.list_id, vl.node_id, COUNT(*) AS c
FROM vote_logs vl
WHERE vl.node_id=2442703 AND vl.agree_type='DOWN_VOTE'
GROUP BY vl.list_id) tmp
ON DUPLICATE KEY UPDATE num_down_votes = tmp.c;

vote_counts 表对 (list_id, node_id) 有唯一键约束。

最佳答案

如果我没记错的话,这应该有效:

INSERT INTO vote_counts (list_id, node_id, num_down_votes) 
SELECT vl.list_id, vl.node_id, COUNT(*) AS c
FROM vote_logs vl
WHERE vl.node_id=2442703 AND vl.agree_type='DOWN_VOTE'
GROUP BY vl.list_id
ON DUPLICATE KEY UPDATE num_down_votes = vl.c;

如果 vl.c 不起作用,您可能需要使用 Count(vl.*) 因为它是别名 - 不确定,必须进行测试它。

--编辑

也许使用子查询可以解决这个问题:

INSERT INTO vote_counts (list_id, node_id, num_down_votes) 
SELECT list_id, node_id, c
FROM (
SELECT vl.list_id, vl.node_id, COUNT(*) AS c
FROM vote_logs vl
WHERE vl.node_id=2442703 AND vl.agree_type='DOWN_VOTE'
GROUP BY vl.list_id
) tempTable
ON DUPLICATE KEY UPDATE num_down_votes = tempTable.c;

祝你好运。

关于MySQL - 如何存储 GROUP BY 的结果以便在重复键更新中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14533091/

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