Mysql
mysql - 插入共享相同外鍵的多個值
我有以下表格:
create table countries ( country_id tinyint unsigned, iso_alpha3_code varchar(4) ); create table provinces ( province_id bigint unsigned, province_name varchar(50), country_id tinyint unsigned, foreign key (country_id) references countries(country_id) on delete restrict on update cascade );
插入記錄到省份,
country_id
需要對應的:insert into provinces (province_name, country_id) VALUES ('Alabama', (select country_id from countries where iso_alpha3_code = 'USA')), ('California', (select country_id from countries where iso_alpha3_code = 'USA')), ('Alaska', (select country_id from countries where iso_alpha3_code = 'USA'));
如何在沒有重複選擇語句的情況下插入這些記錄來獲取外鍵?可以使用CTE之類的東西嗎?
**PS:**我找到了這個,但它是用於 postgreSQL 的。
這是另一種方法:
SELECT @usa := country_id from countries where iso_alpha3_code = 'USA'; insert into provinces (province_name, country_id) VALUES ('Alabama', @usa), ('California', @usa), ('Alaska', @usa);
但我認為你不應該正常化
country_code
;只需使用標準的 3 字母(或 2 字母)程式碼。2(或 1)字節的節省是微不足道的。的成本
JOIN
雖然很小,但非零。如果您
countries
出於其他原因(人口、全名等)需要該表,則讓 3 或 2 字元程式碼成為該PRIMARY KEY
表的“自然”。