2017-04-14 51 views
0

有两个表格,第一个表格为country_sports,列为country_id,country_name,sports_iddate。第二个是sports与列sports_idsports_namesports_date如何做插入语句在列中输入多个ID? SQL语句

当我在网络应用中发布表格并给出sports_name并选择运动列表时,我想创建一个插入语句,选择sports_name并获取运动ID的列表并将其放入第一个表'country_sports ”。

这里,sports_id应该有多个ID。

例如,

insert into country_sports (country_id, country_name, sports_id, date) 
values ('', '', '', curdate()); 

例如,数据结构应该是

('1', 'germany', '1, 2, 3, 4', 12-02-2017); 
+0

我认为你必须在你的例子准备4个独立的刀片。你没有指定哪个数据库。 – etsa

+0

@etsa,它是MYSQL数据库。 –

+1

你描述一个多对多的关系,这将意味着你将不得不增加已fk_country_sports_id和fk_sports_id第3表,表中有没有展现国家运动和体育 –

回答

0

尝试这种情况:

IF sports_id THEN IS NOT NULL

BEGIN 

    SET @sportsID_list = CONCAT('''',REPLACE(REPLACE(sportsID,' ',''),',',QUOTE(',')),''''); 

    SET @ sportsID_stub = REPLACE(@sportsID_list,',',''); 

    SET @ sportsID_array_count = LENGTH(@sportsID_list) - LENGTH(@sportsID_stub) + 1; 

    SET @x = 0; 

    WHILE @x < @ sportsID_array_count DO 

      SET @x = @x + 1; 

      SET @sqlv = CONCAT('SELECT ELT(',@x,',',@ sportsID_list,') INTO @sportidobj'); 

      PREPARE v FROM @sqlv; EXECUTE v; DEALLOCATE PREPARE v; 

      SET @sqliv = CONCAT('INSERT INTO table_name (`Id`,`sportId`)VALUES (',@countryId,',',@ sportidobj',')'); 

     PREPARE spv FROM @sqliv; EXECUTE spv; DEALLOCATE PREPARE spv; 

    END WHILE;  

END; 

END如果;

这是用来插入多条记录与一个记录绑定动态SQL查询。 根据需要替换字段和表名称。