gpt4 book ai didi

Mysql 单独使用 sql 语句插入多行逗号分隔值

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

意图执行多个 sql insert 语句而不将它们运行到 node.js 等中的某种循环

一个典型的sql语句是这样的。

INSERT INTO session_speaker(session_id, speaker_id) VALUES(?, ?);
INSERT INTO session_speaker(session_id, speaker_id) VALUES(?, ?);

INSERT INTO session_speaker(session_id, speaker_id) VALUES(?, ?), (?, ?);

普通的 node.js 循环看起来像这样。

for (var i = 0; i < request.body.length; i++) {
queryRequest.sql += "INSERT INTO session_speaker(session_id, speaker_id) VALUES(?, ?);";
queryRequest.values.push(request.body[i].id, request.params.id);
}

意图/问题:

如果可能,探索一种将 request.body 传递给智能 SQL 的方法,该 SQL 采用数组本身或逗号分隔的值列表,并从那里插入多行,而无需 node.js 循环。

request.body 看起来像这样(可更改以满足要求)

[
{
"id": 12
},
{
"id": 34
}
]

最佳答案

是的,这是可能的。看看这个引用。 https://dev.mysql.com/doc/refman/5.7/en/json.html

这是您可以执行的操作。

  1. 选择您的对象数据
  2. 转换为数组
  3. 取消嵌套数组(在列 View 中创建数组)引用:UNNEST function in MYSQL like POSTGRESQL ,此函数需要一个字符串,因此请将您的数据(数组)转换为数据(字符串),此处引用:Is there a MySQL equivalent to PostgreSQL array_to_string
  4. 使用 insert into select 引用:https://dev.mysql.com/doc/refman/5.1/en/insert-select.html

最后,你的代码是这样的:

insert  into session_speaker(session_id, speaker_id)  
select unnest_mysql ( arrayToString (dataTOArray( stringtojson (json_string) ) ) )

json_string = 这是你来自 php 的数据

dataTOArray = 此函数将您的数据转换为 mysql json 到数组

dataTOArray = 这是将数组转换为字符串 ex。 [1,2,3]'1,2,3'unnest_mysql = 你的字符串到行数据

 string '1,2,3'
--view like

|-------String-----|
|---------1--------|
|---------2--------|
|---------3--------|
|----------- ------|
So when you insert this , it will become row in your table

注意:将我的函数更改为 MySQL 特定函数。

关于Mysql 单独使用 sql 语句插入多行逗号分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33003517/

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