如何在MYSQL中一次更新多个列?

如何在MYSQL中一次更新多个列?,mysql,triggers,Mysql,Triggers,我通过SELECT查找了几种更新多个列的方法,但仍然无法使其正常工作。这就是我所尝试的: delimiter @@ CREATE TRIGGER trigger_sales AFTER INSERT ON orders FOR EACH ROW BEGIN UPDATE sales SET (userid, productid, transaction, price, quarter) = SELECT userid, productid, COUNT(productid) AS trans

我通过SELECT查找了几种更新多个列的方法,但仍然无法使其正常工作。这就是我所尝试的:

delimiter @@
CREATE TRIGGER trigger_sales 
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
UPDATE sales 
SET (userid, productid, transaction, price, quarter) =
SELECT userid, productid, COUNT(productid) AS transaction, SUM(total_P) AS price,
       case when (month(date)) >=3 and (month(date)) <=5 then 'Spring' 
            when (month(date)) >=6 and (month(date)) <=8 then 'Summer'
            when (month(date)) >=9 and (month(date)) <=11 then 'Fall' 
            else 'Winter'
            end AS quarter  
FROM orders     
GROUP BY userid, productid, quarter
END@@
delimiter;
分隔符@@
创建触发销售
在订单上插入后
每行
开始
更新销售额
设置(用户标识、产品标识、交易、价格、季度)=
选择userid、productid、COUNT(productid)作为事务,SUM(total)作为价格,

当(月(日))>=3和(月(日))=6和(月(日))=9和(月(日))执行类似操作时,我首选的方法是执行插入查询,确保每次插入都有一个已在使用的主键。然后我在重复键更新中添加
`column`=VALUES(`column`)
表单中的所有字段,这样做很好。这通常在外键就位时效果最好。

我在没有任何样本数据的情况下测试了您的查询,但此解决方案可以让您走上正确的道路。在多个表上使用
UPDATE
时,我使用
VIEW
克服了
groupby
的限制:

CREATE VIEW orders_view AS
     SELECT userid, 
            productid, 
            COUNT(productid) AS 'transaction', 
            SUM(total_P) AS price,
            CASE 
       WHEN (MONTH(o.date)) >=3 AND (MONTH(o.date)) <=5 THEN 'Spring' 
       WHEN (MONTH(o.date)) >=6 AND (MONTH(o.date)) <=8 THEN 'Summer'
       WHEN (MONTH(o.date)) >=9 AND (MONTH(o.date)) <=11 THEN 'Fall'
               ELSE 'Winter'
            END AS quarter    
       FROM orders     
   GROUP BY userid, productid, quarter;

     UPDATE sales s, orders_view o
        SET s.userid = o.userid,
            s.productid = o.productid,
            s.`transaction` = o.`transaction`,
            s.price = o.price,
            s.quarter = o.quarter
      WHERE s.userid = o.userid;
CREATE VIEW orders\u VIEW AS
选择userid,
productid,
将(productid)计数为“事务”,
总价作为价格,
案例

当(月(o.date))>=3和(月(o.date))=6和(月(o.date))=9和(月(o.date))时,是否要
更新
插入
新值?订单和销售表之间有关系吗?我想更新。是的,销售表统计同一用户在不同季度下了多少特定产品的订单。这些表之间有什么关系?你能详细说明你所说的吗?我的销售表有两个外键userid和productid。当userid、productid和订单季度尚未在sales中时,我想在sales中插入一个新行。如果它们已经存在,我想将事务更新为事务+1并更新总价。