MySQL:更新表中与另一个查询的结果匹配的所有行
我编写了一个查询,返回关联客户和销售人员的行。
请注意,该查询连接了多个数据库表。请注意,并非所有客户都有销售人员。
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
我的数据库中还有一个表(称为发票),如下所示。
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
如何在 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
也就是说,如何更新我的发票表以包含正确的 salesperson_id 和 salesperson_name(如果存在该关系)?
请注意,如果存在客户/销售人员关系,则该客户的所有发票都应具有与其关联的销售人员(如果该客户有销售人员)。
非常感谢:-)
I've written a query returning rows associating Customers and Salespeoeple.
Note that the query joins several database tables. And note that not all customers have a salesperson.
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
I also have a single table (called invoices) in my database that looks like this.
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
How can I use UPDATE in MySQL to make my invoices table look like the table below?
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
That is to say, how can I update my invoice table to include the correct salesperson_id and salesperson_name, where that relationship exists?
Note that where a Customer/Salesperson relationship exists, all invoices for that customer should have the salesperson associated with it, if there is a salesperson for that customer.
Thanks kindly :-)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用子查询
最广泛支持的选项
使用 JOIN
Using subqueries
Most widely supported option
Using JOINs
假设您的第一个表名为
customers
并且那些没有销售人员的客户的s_id
为NULL
我建议在开发中进行测试或运行
首先使用上面的
查询以确保结果。JOIN
进行SELECTAssuming your first table is named
customers
and those customers without a salesperson have ans_id
ofNULL
I suggest testing in development or running a
SELECT
query using theJOIN
above first to ensure the results.您可以创建一个视图以使
UPDATE
语句变得简单。该视图应包含您的查询(在您的情况下是关联客户和销售人员的查询)。然后更新您的表格(在您的情况下为发票
),如下所示:You can create a view to make your
UPDATE
statement simple. The view should contain your query (in your case the query that associates customers and salespeople). Then update your table (invoices
in your case) like this: