gpt4 book ai didi

mysql - 如何从一张表中回填丢失的 mysql 数据?

转载 作者:行者123 更新时间:2023-11-30 00:21:07 25 4
gpt4 key购买 nike

我有一个名为“employee”的 MySQL 表,如下所示:

ID | User    | Phone_No     | Phone_No_Count
1 | Fred | 9999 | 1
2 | John | 8888 | 2
3 | Pablo | 123 | 1
4 | John | | 0
5 | John | 8888 | 2
6 | Pablo | | 0
7 | John | 456 | 1

Phone_No_Count 是 Phone_No 列的计数,如果没有 Phone_No,则 Phone_No_Count 设置为零。

我想使用具有最高 Phone_No_Count 的 Phone_No 条目回填缺失的 Phone_No 条目。

例如用户 John 有 2 个 Phone_No(8888 和 456),因此我只想使用 8888,因为它具有最高的 Phone_No_Count (2)

员工中的回填数据将如下所示:

ID | User    | Phone_No     | Phone_No_Count
1 | Fred | 9999 | 1
2 | John | 8888 | 2
3 | Pablo | 123 | 1
4 | John | 8888 | 0
5 | John | 8888 | 2
6 | Pablo | 123 | 0
7 | John | 456 | 1

然后我可以单独更新 Phone_No_Count,无论如何我都知道该怎么做。

我在网上看到的所有示例都是用于回填多个表,或者如果只是一个表,则它们没有所需的逻辑。

有人可以帮忙吗,因为这整天都在煎熬我的大脑!

最佳答案

进行此类更新的一种方法是,您可以在查询中使用用户定义的变量,并为具有最大电话计数的用户存储电话(即相关子查询),然后将此数据与您的表连接并执行更新

update Table1 t1a 
inner join(
select t1.id,
t1.`User`,
@p:= case
when t1.Phone_No is null then @c
else t1.Phone_No END Phone_No,
@c:=(select Phone_No from Table1 where t1.`User`=`User` order by `Phone_No_Count` DESC limit 1 ) max_phone
from Table1 t1,(select @p:=0,@c:=0) t
order by t1.`User`,t1.`Phone_No_Count` DESC
) t2 on(t1a.id=t2.id)
set t1a.Phone_No = t2.Phone_No

Fiddle Demo

关于mysql - 如何从一张表中回填丢失的 mysql 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23228720/

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