这是我的问题
我有一个名为list
的表:
|| ||客户名称|| ||地址区|| ||块天|| ||文件
和list
从另一个表document
获取payments
的更新,来自名为document
和client
的列。
当我运行此查询时
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>
在这种情况下,查询是如何被禁止的?如果它存在,当然。
感谢。
答案 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,例如)您从更改到付款用于更新列表表的表。