Mysql 如何将select语句转换为update语句?
上述select语句汇总每个报价上所有产品的净成本,并按报价编号显示总和 我在quotes表中添加了一个net_cost_total字段。我想用每个报价的净成本总额更新所有报价。查询失败了,它说组语法不好,我不知道该怎么做 试试这个:Mysql 如何将select语句转换为update语句?,mysql,sql,Mysql,Sql,上述select语句汇总每个报价上所有产品的净成本,并按报价编号显示总和 我在quotes表中添加了一个net_cost_total字段。我想用每个报价的净成本总额更新所有报价。查询失败了,它说组语法不好,我不知道该怎么做 试试这个: SELECT quotes.qid, SUM(qitems.net_cost_ext) FROM quotes, qitems WHERE quotes.qid = qitems.qid GROUP BY qitems.qid; UPDATE quotes, q
SELECT quotes.qid, SUM(qitems.net_cost_ext)
FROM quotes, qitems
WHERE quotes.qid = qitems.qid
GROUP BY qitems.qid;
UPDATE quotes, qitems
SET quotes.net_cost_total = SUM(qitems.net_cost_ext)
WHERE quotes.qid = qitems.qid
GROUP BY qitems.qid;
尝试:
(灵感来自上一篇MySQL评论)使用标准SQL:
UPDATE quotes
INNER JOIN (
SELECT SUM(qitems.net_cost_ext) AS s
FROM qitems
GROUP BY qitems.qid
) q USING(qid)
SET net_cost_total = q.s
这个解决方案非常有效。我不知道joins会这么做。。。我总是将它们用于简单的表联接。如果我正确理解您基于join语句中的select语句创建qitems表的自定义版本…它被称为select派生表。它()实际上包含一个虚拟表。
UPDATE quotes
INNER JOIN (
SELECT SUM(qitems.net_cost_ext) AS s
FROM qitems
GROUP BY qitems.qid
) q USING(qid)
SET net_cost_total = q.s
UPDATE quotes
SET net_cost_total = (
SELECT SUM(net_cost_ext)
FROM qitems
WHERE quotes.qid = qitems.qid
)
WHERE EXISTS (
SELECT *
FROM qitems
WHERE quotes.qid = qitems.qid
);