MYSQL UPDATE 查询多个值

Posted

技术标签:

【中文标题】MYSQL UPDATE 查询多个值【英文标题】:MYSQL UPDATE query for multiple values 【发布时间】:2019-01-02 04:52:56 【问题描述】:

希望从另一个表中的值更新一个表。这些表连接到一个人的名字和姓氏。问题是我们有重复的记录,我们试图为每条记录连接一个值,但是当查询结束时,它只会找到第一条记录。 Table1 和 Table2 都包含大约 20k 条记录。

当前查询

UPDATE table1, table2 SET table1.value = CONCAT(table1.pet,",",table2.pet) 
WHERE table1.fName = table2.fName AND table1.lName = table2.lName;

表 1 示例

fName  lName   pet
===================
John   Doe     bird
Jane   Doe     bird

表2示例

fName lName  pet
===================
John  Doe     dog
Jane  Doe     dog
John  Doe     fish
John  Doe     cat

表 1 中的预期结果

fName lName  pet
===================
John  Doe     bird,dog,fish,cat
Jane  Doe     bird,dog

我们目前得到的结果

fName lName  pet
===================
John  Doe     bird,dog
Jane  Doe     bird,dog

感谢任何帮助!

【问题讨论】:

【参考方案1】:

您可以在下面尝试 - 使用 group_concat() 函数

update Table1 a
join
(
select fName,lName, group_concat(pet) as pet1
from Table2
group by fName,lName
)b on a.fName=b.fName and a.lName=b.lName
set a.pet=concat(a.pet,',',pet1)

【讨论】:

group_concat 有文本限制,如果这在他的服务器上很小,这可能会造成麻烦。【参考方案2】:

你也可以试试这个

 UPDATE Table1  X SET 
X.Column1=Y.column2
from(
select Column2 from tabel2
where column3=column4 
) Y where X.column4=Y.column4 

【讨论】:

以上是关于MYSQL UPDATE 查询多个值的主要内容,如果未能解决你的问题,请参考以下文章

错误:来自 ASP.NET 的 UPDATE 查询中的“没有为一个或多个必需参数提供值”

从具有多个条目的另一个表更新MYSQL

mysql中怎么修改多个字段的数据

sql 请教update语句in多个值时,进行多次更新

MYSQL UPDATE SET 在同一列但有多个 WHERE 子句

oracle 怎么理解update 表 set 字段1 = 值,字段2 = 值 where 字段3 = 值