Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将select语句转换为update语句?_Mysql_Sql - Fatal编程技术网

Mysql 如何将select语句转换为update语句?

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表中添加了一个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, 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
              );