如何在 INSERT 中使用 SELECT 来定义 mysql 中的特定列

How to use SELECT inside INSERT to define a specific column in mysql

我有一个插入语句需要从另一个 table 获取特定值。

所以,我搜索并发现了这个问题: How to insert values into an MYSQL-Table by using Select-Statements

但是,我遇到了困难,因为我只需要 1 列。

我现在拥有的:

INSERT INTO TABLE_A (ID_STATUS, ID_USER, ID_Q_INI, ID_Q_FIN, PRICE ) 
VALUES 
(1, 2, 10, 17, (SELECT SUM(PRICE) FROM TABLE_B WHERE (ID_Q >= 10 && ID_Q < 17))

我想做的是:当我注册新购买时,我的脚本只会输入状态、用户 ID 以及初始产品 ID 和最终产品 ID。

最终价格将是从 X 到 Y-1 的产品的总和。

我想做的事情有可能吗?或者我必须进行第一个查询,以获取值然后进行插入?

我认为这可行(未测试)

INSERT INTO TABLE_A (ID_STATUS, ID_USER, ID_Q_INI, ID_Q_FIN, PRICE ) 
SELECT 1, 2, 10, 17
, SUM(PRICE) 
FROM TABLE_B 
WHERE ID_Q >= 10 
AND ID_Q < 17

也许您需要在 1、2、10 和 17 上添加分组

INSERT INTO TABLE_A (ID_STATUS, ID_USER, ID_Q_INI, ID_Q_FIN, PRICE ) 
SELECT 1, 2, 10, 17
, SUM(PRICE) 
FROM TABLE_B 
WHERE ID_Q >= 10 
AND ID_Q < 17
GROUP BY 1, 2, 10, 17

我相信您在查询末尾漏掉了 )

您的查询经过一些格式化后:

INSERT INTO TABLE_A
    (ID_STATUS, ID_USER, ID_Q_INI, ID_Q_FIN, PRICE ) 
VALUES 
    (
        1,2,10, 17, (
            SELECT SUM(PRICE) 
            FROM TABLE_B
            WHERE (ID_Q >= 10 && ID_Q < 17)
        )