2017-04-14 53 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查詢。 根據需要替換字段和表名稱。