Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 是否可以插入列表而不是字符串?_Mysql_Sql - Fatal编程技术网

Mysql 是否可以插入列表而不是字符串?

Mysql 是否可以插入列表而不是字符串?,mysql,sql,Mysql,Sql,我试图通过SQL了解更多信息,并尝试插入一个与1 ID(行)链接的数字列表 现在我知道了如何在SELECT中使用List,比如 SELECT * FROM products WHERE catalog_number IN ("CAT1", "CAT2", "CAT3"); 我正在尝试做一件类似的事情,但是使用INSERT 很遗憾,像这样的事情是行不通的 INSERT INTO link_products ('main_product_id', 'linked_product_id') VALU

我试图通过SQL了解更多信息,并尝试插入一个与1 ID(行)链接的数字列表

现在我知道了如何在SELECT中使用List,比如

SELECT * FROM products WHERE catalog_number IN ("CAT1", "CAT2", "CAT3");
我正在尝试做一件类似的事情,但是使用INSERT

很遗憾,像这样的事情是行不通的

INSERT INTO link_products ('main_product_id', 'linked_product_id') VALUES (124, IN(1,2,3,4,))
基本上,我正在尝试完全在SQL中使用php
foreach
命令(在
phpmyadmin
中),我甚至不确定这是否可行

结果应为(在数据库中):

id |主|产品| id |链接|产品|id
1          124               1
2          124               2
3          124               3
4          124               4 

只需插入如下数据:

INSERT INTO link_products ('main_product_id', 'linked_product_id') 
VALUES (124, 1)
      ,(124, 2)
      ,(124, 3)
      ,(124, 4)
;

我想你需要像这样的东西

INSERT INTO link_products ('main_product_id', 'linked_product_id')
SELECT 124, productId FROM  products WHERE catalog_number IN ("CAT1", "CAT2", "CAT3")

您可以在一条语句中插入多行,如下所示:
insert-INTO-tbl(col1,col2…)值(1,2,,,,,,,3,4,,,,5,6,…)
PHP和sql是非常不同的-sql没有列表的概念,它对VALUES子句中的有效内容有非常严格的规则(您尝试的不是)。mysql确实有循环的概念,但只存在于存储程序(过程、函数、触发器、事件)中,而不存在于select或insert或update或delete语句中,但这种循环与php完全不同。我明白了,谢谢你的解释:)@P.SalmonOh我甚至没有想到这个值链,谢谢!有时也会发生在我身上;-)