我有兩個表,如下所示。下面提到的兩個表中的Id列值都是自動遞增的。
+----+-----------+----------------+
集團| Id |
GroupId |
GroupName |
+----+-----------+----------------+
| 1 |
10 |
[email protected] |
| 2 |
20 |
[email protected] |
| 3 |
30 |
[email protected] |
| 4 |
40 |
[email protected] |
+----+-----------+----------------+
通過使用另一個表值查詢連接列值來更新列值
客戶
+---+-----------------+------------+----------+---------------+
| Id |
GroupAliasName |
Domain |
GroupId |
CustomerName |
+---+-----------------+------------+----------+---------------+
| 1 |
Grp1 |
abc.com |
null |
Cust1 |
| 2 |
Grp2 |
abc.com |
null |
Cust2 |
| 3 |
Grp3 |
xyz.com |
null |
Cust3 |
| 4 |
Grp4 |
def.com |
null |
Cust4 |
+---+-----------------+------------+----------+---------------+
現在從客戶表'GroupAliasName'
和'Domain'
當作爲'[email protected]'
級聯相當於'GroupName'
在集團表。
從客戶表使用連接的值,我需要從集團表拉'GroupId'
和填充相同的客戶表的'GroupId'
如下
客戶
+----+----------------+------------+----------+---------------+
| Id |
GroupAliasName |
Domain |
GroupId |
CustomerName |
+----+----------------+-----------+---------+-----------------+
| 1 |
Grp1 |
abc.com |
10 |
Cust1 |
| 2 |
Grp2 |
abc.com |
20 |
Cust2 |
| 3 |
Grp3 |
xyz.com |
30 |
Cust3 |
| 4 |
Grp4 |
def.com |
40 |
Cust4 |
+----+----------------+------------+----------+---------------+
查詢,我試過是如下
UPDATE Customer SET GroupId = (SELECT GroupId FROM Group G WHERE GroupName = (SELECT CONCAT(GroupAliasName, '@', Domain) AS GroupName FROM Customer WHERE Domain IS NOT NULL) AND G.GroupName = GroupName);
,但我得到的錯誤爲'Subquery returns more than 1 row'
。
請建議或提供您的輸入。
完全一樣的錯誤說:你的子查詢一個返回數據的多行/記錄的情況下,其中只有一個記錄/行是允許的。找出哪一個,然後修改它只返回一個單一的記錄/行。另外,當你同時改變它時,你不能使用表格作爲數據源。如果你想更新'customer',那麼請考慮使用update的'join'支持。 –