gpt4 book ai didi

Mysql 在查询中使用计数

转载 作者:行者123 更新时间:2023-11-29 04:45:02 25 4
gpt4 key购买 nike

假设我有两个表 T 和 T1

T

id   p   o 
1 47 1
2 48 2
3 49 25

T1

     id   p   o 
1 47 1
2 42 2
3 47 25

如果 count(T1.p)>1

,我希望将 T1 中的行插入到 T 中

T

   id   p   o 
1 47 1
2 48 2
3 49 25
1 47 1
3 47 25

我尝试了以下查询,但没有成功

insert into T(id , p,o)(SELECT T1.id , T1.p1,T1.l FROM T1 
where SELECT count(*) FROM t1
GROUP BY t1.p
HAVING COUNT(*)>1)

更多details .任何帮助将不胜感激。

最佳答案

要将这些值放入 T 中,您必须找出它们在 T1 中的位置,然后再次将它们与 T1 连接,以获得正确的行数:

INSERT INTO T (id, p, o)
SELECT TT.*
FROM T1 TT
INNER JOIN (
SELECT id, p1, l
FROM T1
GROUP BY p1
HAVING COUNT(*) > 1
) a ON a.p1 = TT.p1;

sqlfiddle demo

这是如何工作的:

SELECT id, p1, l
FROM T1
GROUP BY p1
HAVING COUNT(*) > 1

返回表中多次出现的p1。这将返回 p1 = 47。GROUP BY p1 HAVING COUNT(*) > 1 确保对于每个 p1,我们只希望结果出现不止一次。

然后,我们再次与 T1 进行内部 JOIN,以获得 P1 = 47 的所有行:

ID  P1  L
1 47 1
3 47 25

然后您只需将此结果插入目标表即可。

关于Mysql 在查询中使用计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20521927/

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