MYSQL - 错误:#1242 - 子查询返回超过1行

时间:2015-09-06 07:22:31

标签: mysql

我想将Total_Price表和Food_Order表中的Drinks_Order添加到Order表中。但是,它给了我错误:#1242 - 子查询返回超过1行。

从2个表中添加值的编码:

UPDATE `ORDER`
    SET Total_Price = 
    (SELECT Total_Price FROM FOOD_ORDER WHERE FOOD_ORDER.Order_ID 
    =`ORDER`.Order_ID) + (SELECT Total_Price FROM DRINKS_ORDER WHERE 
    DRINKS_ORDER.Order_ID = `ORDER`.Order_ID);

FOOD_ORDERDRINKS_ORDERORDER表的编码:

INSERT INTO `ORDER` (`Order_ID`, `Pay_Method`, `Pay_status`, `Order_Time`, `Cus_ID`, `Emp_ID`)VALUES    
    ('1000000001','CASH','PAID','2015-09-05 12:58:51','100000','10000006'),
    ('1000000002','CASH','PAID','2015-09-05 14:45:00','100001','10000009'), 
    ('1000000003','CREDIT CARD','PAID','2015-09-05 16:34:21','100002','10000002'),
    ('1000000004','CASH','PAID','2015-09-05 17:10:10','100003','10000009'), 
    ('1000000005','CREDIT CARD','PAID','2015-09-06 12:33:11','100004','10000007'),
    ('1000000006','CREDIT CARD','PAID','2015-09-06 15:51:15','100005','10000004'),
    ('1000000007','CASH','PAID','2015-09-06 16:20:05','100006','10000003'), 
    ('1000000008','','UNPAID','2015-09-06 17:00:00','100007','10000006'),
    ('1000000009','','UNPAID','2015-09-06 17:23:15','100008','10000002'),
    ('1000000010','','UNPAID','2015-09-06 17:30:34','100009','10000007')


INSERT INTO `FOOD_ORDER` VALUES 
    ('F000001','3','39.90','1000000001','201'),
    ('F000002','1','22.50','1000000002','108'),
    ('F000003','2','25.40','1000000003','203'),
    ('F000004','2','25.20','1000000004','101'),
    ('F000005','2','26.60','1000000005','202'),
    ('F000006','1','30.40','1000000006','103'),
    ('F000007','1','30.40','1000000007','106'),
    ('F000008','2','7.60','1000000008','803'),
    ('F000009','2','26.60','1000000009','202'),
    ('F000010','4','16.00','1000000010','801')


INSERT INTO `DRINKS_ORDER` VALUES 
    ('D000001','2','16.00','1000000001','907'),
    ('D000002','1','4.00','1000000001','903'),
    ('D000003','1','3.00','1000000003','905'),
    ('D000004','2','16.00','1000000005','908'),
    ('D000005','2','6.00','1000000006','901'),
    ('D000006','2','6.00','1000000006','902'),
    ('D000007','1','3.00','1000000008','905'), 
    ('D000008','2','6.00','1000000009','906'),
    ('D000009','1','3.00','1000000010','904')

1 个答案:

答案 0 :(得分:1)

Order_IDFOOD_ORDER中的DRINKS_ORDER并非唯一。如果您想添加所有价格,请使用SUM

UPDATE `ORDER`
    SET Total_Price = (SELECT SUM (Total_Price) FROM FOOD_ORDER 
                        WHERE FOOD_ORDER.Order_ID =`ORDER`.Order_ID) + 
                      (SELECT SUM (Total_Price) FROM DRINKS_ORDER 
                        WHERE DRINKS_ORDER.Order_ID = `ORDER`.Order_ID);
相关问题