mysql - 更新正在查询的同一张表

标签 mysql sql

此查询按预期工作并返回丢失的客户号码。

SELECT *
FROM Person_Details AS b
     INNER JOIN Person_Details AS a ON a.holdername = b.holdername
                                       AND a.District = b.District
                                       AND a.Dob = b.DOb
                                       AND a.Address = b.Address
WHERE b.customer_No IS NULL limit 10

我需要做的是找到给定“持有人名称”的客户编号并更新它为 NULL 的位置。我希望以下更新能够发挥作用。但它更新了 0 条记录。

update Person_Details as b inner join Person_Details as a
on a.holdername = b.holdername  and a.District = b.District   and a.Dob = b.DOb and a.Address = b.Address 
set b.customer_no = a.customer_No 
where b.customer_No is null

我是否正确使用自连接更新?

<小时/> <小时/>

更新:

当我用测试用例尝试它时,它按预期工作。但是当我在生产服务器上使用相同的查询时,它不会更新任何行。我只是想知道我是否遗漏了一些明显的东西。

create table Person_Details (holdername varchar(100), District varchar(100),
                             Dob varchar(100), Address varchar(100), customer_No int);

                             insert into Person_Details values ('shantanu', 'mumbai', '1970-11-16', 'india', 123);
                             insert into Person_Details values ('shantanu', 'mumbai', '1970-11-16', 'india', NULL);
                             insert into Person_Details values ('akbar', 'delhi', '1995-12-11', 'india', 987);


select * from  Person_Details as b inner join Person_Details as a
on a.holdername = b.holdername  and a.District = b.District  and a.Dob = b.DOb and a.Address = b.Address 
where b.customer_No is null
limit 10;

update Person_Details as b inner join Person_Details as a
on a.holdername = b.holdername  and a.District = b.District   and a.Dob = b.DOb and a.Address = b.Address 
set b.customer_no = a.customer_No 
where b.customer_No is null

最佳答案

尝试添加

并且 a.customer_no IS NOT NULL 所以....

update Person_Details as b inner 
join Person_Details as a 
on a.holdername = b.holdername  
and a.District = b.District
and a.Dob = b.DOb 
and a.Address = b.Address 
and a.customer_no IS NOT NULL
set b.customer_no = a.customer_No 
where b.customer_No is null

关于mysql - 更新正在查询的同一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47154980/

相关文章:

带有特殊字符的php mysql搜索

php - 通过三步过程处理大型数组的 csv 导入

sql - 在不使用 ROW_NUMBER() OVER 函数的情况下获取分区内行(等级)的序列号

mysql - 尝试获取简单数据库表的计数统计信息

MySQL 不允许用户登录 : Error 1524

MySQL:我可以创建两个具有相同数据字段的表吗

javascript - 无法接收代码

php - 关系表中的 SQL 搜索查询

mysql - 如何在mysql中在union之前插入一行?

c# - 当对象类型在编译时未知时如何构建 LINQ 查询