如何使用insert语句在列中输入多个id? SQL语句

时间:2017-04-14 10:20:15

标签: sql structure

有两个表,第一个是country_sports,其中列country_idcountry_namesports_iddate。第二个是sports,列sports_idsports_namesports_date

当我通过提供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); 

1 个答案:

答案 0 :(得分:0)

试试这个:

如果sports_id不是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 IF;

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