gpt4 book ai didi

php - MySQL:向表中插入多行数据,一些数据来自另一个表(关系型)

转载 作者:行者123 更新时间:2023-11-30 22:59:09 25 4
gpt4 key购买 nike

关于 MySQL: Insert data into table, some data comes from another table (relational) 的附加问题

我上面的问题基本上是问“如何使用在另一行中找到的信息将一行插入表中”。答案是使用如下查询:

INSERT INTO user_config(cid, sid, value)
SELECT $cid, id, $value
FROM user_settings
WHERE mid='$mid' AND name='$name'
ON DUPLICATE KEY UPDATE value = $value;

我现在的问题是,我需要插入多行。对于我需要插入的每一行,$cid$value$mid$name< 都有不同的值。例如,我可以运行以下(伪):

function x($cid, $mid, $name, $value){
// run query:
INSERT INTO user_config(cid, sid, value)
SELECT $cid, id, $value
FROM user_settings
WHERE mid='$mid' AND name='$name'
ON DUPLICATE KEY UPDATE value = $value;
}

x(1,'a','b');
x(2,'c','d');
x(3,'f','e');

问题是,这将运行 3 个查询,而我希望能够一次完成。是否可以?如果这有助于解决问题,我可以为 $cid$mid$name 提供一个数组吗?

最佳答案

大概 x 调用中的信息可以表示为对数据库中各种表的选择。您的 x 调用列表看起来像一个表,其列为 $cid、$mid、$name、$value,对吗? (你的 x 调用应该有 4 个参数而不是 3 个。)

给出表的定义和生成 x 参数的查询,作为一个包含列 cid、mid、name、value 的表。

然后修改你问题中的select,使x select在FROM中。当然,您可能不必使用子选择来表达更新;我只是描述了向您提供的语法添加语法方面的变化。

更新

您可以创建一个(可能是临时的)表作为 x 选择。将该表放在 FROM 中。如果在您收集多个 x 参数列表时表格在附近,那么您可以在获得它时插入每个 (cid,mid,name,value)。

INSERT INTO user_config (cid, sid, value)
SELECT cid, id, value
FROM user_settings s JOIN x
ON s.mid=x.mid AND s.name=x.name
ON DUPLICATE KEY UPDATE value = x.value;

关于php - MySQL:向表中插入多行数据,一些数据来自另一个表(关系型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24816528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com