Tom*_*ell 16 mysql sql sql-update
我写了一个查询返回关联Customers和Salespeoeple的行.
请注意,查询会连接多个数据库表.请注意,并非所有客户都有销售人员.
c_id c_name s_id s_name
24 microsoft 1 mike
27 sun 1 mike
42 apple 2 bill
44 oracle 1 mike
47 sgi 1 mike
58 ebay 2 bill
61 paypal 3 joe
65 redhat 1 mike
Run Code Online (Sandbox Code Playgroud)
我的数据库中也有一个表(称为发票),如下所示.
i_id c_id c_name s_id s_name
7208 22 toyota NULL NULL
7209 23 ford NULL NULL
7210 27 sun NULL NULL
7211 42 apple NULL NULL
7212 12 nissan NULL NULL
7213 15 gm NULL NULL
7214 61 paypal NULL NULL
Run Code Online (Sandbox Code Playgroud)
如何在MySQL中使用UPDATE使我的发票表看起来像下表?
i_id c_id c_name s_id s_name
7208 22 toyota NULL NULL
7209 23 ford NULL NULL
7210 27 sun 1 mike
7211 42 apple 2 bill
7212 12 nissan NULL NULL
7213 15 gm NULL NULL
7214 61 paypal 3 joe
Run Code Online (Sandbox Code Playgroud)
也就是说,如何更新我的发票表以包含正确的salesperson_id和salesperson_name,该关系存在于何处?
请注意,如果存在客户/销售人员关系,则该客户的所有发票都应该与销售人员关联,如果该客户有销售人员.
谢天谢地:-)
OMG*_*ies 35
最广泛支持的选项
UPDATE INVOICES
SET s_id = (SELECT cs.s_id
FROM CUSTOMERS_AND_SALES cs
WHERE cs.c_id = INVOICES.c_id),
s_name = (SELECT cs.s_name
FROM CUSTOMERS_AND_SALES cs
WHERE cs.c_id = INVOICES.c_id)
WHERE INVOICES.c_id IN (SELECT cs.s_id
FROM CUSTOMERS_AND_SALES cs)
Run Code Online (Sandbox Code Playgroud)
UPDATE INVOICES
JOIN CUSTOMERS_AND_SALES cs ON cs.c_id = INVOICES.c_id
SET s_id = cs.s_id,
s_name = cs.s_name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26124 次 |
| 最近记录: |