简体   繁体   English

Mysql Update选择语句

[英]Mysql Update select statement

I am trying to run an update on the following select statement but i dont think mysql is very fond of my syntax, Please advise? 我正在尝试对以下select语句运行更新,但我不认为mysql非常喜欢我的语法,请告知?

    UPDATE `invoice_lines`
SET 
`invoice_lines`.`cost_price` = Costnew,
`invoice_lines`.`list_price` = Listnew,
`invoice_lines`.`unit_price` = Unitnew
SELECT (quote_lines.`list_price` * products.commision_pers/100) AS Listnew, 
(quote_lines.`cost_price` * products.commision_pers/100) AS Costnew,
(quote_lines.`unit_price` * products.commision_pers/100) AS Unitnew
FROM `quote_lines`
INNER JOIN quotes
ON quotes.id = quote_lines.`quote_id`
INNER JOIN QuotePers
ON quoteid = quotes.id
INNER JOIN products
ON products.id = quote_lines.`related_id`
INNER JOIN invoice
ON invoice.`from_quote_id` = QuotePers.quoteid
INNER JOIN invoice_lines
ON invoice_lines.`invoice_id` = invoice.id
WHERE products.id = invoice_lines.`related_id`
AND  prodid = invoice_lines.related_id
AND invoice_id = invoice.id
GROUP BY  quotes.id,products.`id`

Buddy, Try to refer the table names from which those columns come from in where condition and next time you need to make use of table_name aliases while using such big queries :) 伙计,尝试引用这些列来自的表名where条件和下一次使用这种大查询时您需要使用table_name别名:)

UPDATE invoice_lines
SET 
invoice_lines.cost_price = Costnew,
invoice_lines.list_price = Listnew,
invoice_lines.unit_price = Unitnew
SELECT (quote_lines.list_price * products.commision_pers/100) AS Listnew, 
(quote_lines.cost_price * products.commision_pers/100) AS Costnew,
(quote_lines.unit_price * products.commision_pers/100) AS Unitnew
FROM quote_lines
INNER JOIN quotes
ON quotes.id = quote_lines.quote_id
INNER JOIN QuotePers
ON quote_lines.quoteid = quotes.id
INNER JOIN products
ON products.id = quote_lines.`related_id`
INNER JOIN invoice
ON invoice.from_quote_id = QuotePers.quoteid
INNER JOIN invoice_lines
ON invoice_lines.invoice_id = invoice.id
WHERE products.id = invoice_lines.related_id
AND quote_lines.prodid = invoice_lines.related_id
AND quote_lines.invoice_id = invoice.id
GROUP BY  quotes.id,products.id

Try this, I can not test it as I don't have your database schema: 尝试此操作,因为我没有您的数据库架构,所以无法对其进行测试:

UPDATE `invoice_lines`
INNER JOIN quotes
ON quotes.id = quote_lines.`quote_id`
INNER JOIN QuotePers
ON quoteid = quotes.id
INNER JOIN products
ON products.id = quote_lines.`related_id`
INNER JOIN invoice
ON invoice.`from_quote_id` = QuotePers.quoteid
INNER JOIN invoice_lines
ON invoice_lines.`invoice_id` = invoice.id
WHERE products.id = invoice_lines.`related_id`
AND  prodid = invoice_lines.related_id
AND invoice_id = invoice.id
SET 
`invoice_lines`.`cost_price` = (quote_lines.`cost_price` * products.commision_pers/100),
`invoice_lines`.`list_price` = (quote_lines.`list_price` * products.commision_pers/100),
`invoice_lines`.`unit_price` = (quote_lines.`unit_price` * products.commision_pers/100)

Hope it gets you on the right track. 希望它能使您走上正确的道路。 Also check this related question 同时检查此相关问题

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM