mysql更新查询不适用于不同的列

时间:2017-08-02 10:09:32

标签: mysql

花了几个小时在堆栈上搜索解决方案后,我似乎无法在这个问题上得到正确答案。

我有两张桌子:“维修”和“关系”
在“修复”表中,有4列名为“repair_external_supplierID”,“relation_id”,“cliendID”和“supplierID”。 (除了ID栏)
在“关系”表中,我有两列名为“sRelationNumber”& “sCustomerNumber”。 (除了ID栏)
“修复”中的“supplierID”为空,需要填写“关系”中“ID”列中的数据,其中“repair”中的“repair_external_supplierID”与“relation”中的“sRelationNumber”匹配
“修复”中的“clientID”也是如此,当“修复”中的“relation_id”列与“关系”中的“sCustomerNumber”列匹配时,必须填写该内容

这是代码:

/*--SET SUPPLIER ID --*/
UPDATE repairs
SET supplierID = (
SELECT
    id
FROM
    relation
WHERE
    relation.sRelationNumber = repairs.repair_external_supplierID
)
 WHERE
supplierID = '' OR supplierID IS NULL;

/*--SET CLIENT ID --*/
UPDATE repairs
SET clientID = (
SELECT
    id
FROM
    relation
WHERE
     relation.sCustomerNumber = repairs.relation_id
)
WHERE
clientID = '' OR clientID IS NULL;

对于某些reasone,第一个查询按计划工作,第二个返回“Subquery返回超过1行”

为什么?

1 个答案:

答案 0 :(得分:0)

这是我的表格内容

RELATION
id       sCustomerNumber     sSupplierNumber        sRelationNumber
1        K12345              S456789                R123456
2        K98765              S456678                R987654
3        K15789              S957876                R854754
....

这些行中没有一行具有相同的数字
这是我的REPAIRS表格的样子:

REPAIRS
id      clientID       relation_id      supplierID    external_supplier_id
1                      K12345                         R123456
2                      K98765                         R987654           
3                      K15789                         R854754

这应该成为:

REPAIRS
id      clientID       relation_id      supplierID    external_supplier_id
1       1              K12345           1             R123456
2       2              K98765           2             R987654           
3       3              K15789           3             R854754