MYSQL-UPDATE ERROR子查询返回多行

时间:2015-07-24 23:12:37

标签: mysql sql sql-update

这是我的问题

我有一个名为list的表:

|| ||客户名称|| ||地址区|| ||块天|| ||文件

list从另一个表document获取payments的更新,来自名为documentclient的列。

当我运行此查询时

UPDATE list SET document=(SELECT document FROM payments WHERE list.client=payments.client)

对于Subquery returns more than 1 row表上的不同document值重复client值时,我收到错误payments。显然我得到了错误,因为重复了这个值,但是我需要在document列中添加相应的client,即使对于不同的客户端也是如此document。 / p>

在这种情况下,查询是如何被禁止的?如果它存在,当然。

感谢。

1 个答案:

答案 0 :(得分:0)

@nomistic的链接非常有用,您基本上可以获得所有结果,其中客户端值在列表和付款表中匹配。

'list'表中是否存在多个客户端相同的条目?

如果列表只有一个客户端实例,则需要对要更新的特定付款记录(行)进行过滤,目前总是会得到多个结果,您的查询需要构建为它将返回一个独特的记录。

你也没有对列表上的UPDATE查询放置WHERE子句,这可能会影响多行,你的意思是包括一行吗?

示例:

UPDATE list SET document=(SELECT document FROM payments WHERE list.client=payments.client AND payments.id='1234') WHERE client='ClientX';

如果正在运行此查询以响应对另一个表的更新(即付款),您将需要使用更新数据(假设您的查询返回新的行ID,例如)您从更改到付款用于更新列表表的表。