花了几个小时在堆栈上搜索解决方案后,我似乎无法在这个问题上得到正确答案。
我有两张桌子:“维修”和“关系”
在“修复”表中,有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行”
为什么?
答案 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