1 回答

TA貢獻1886條經驗 獲得超2個贊
如果我理解正確,為了將新列表與舊列表匹配,您將必須匹配城市名稱。雖然這并不理想,但它可能是唯一可用的解決方案。
如果您的城市名稱是唯一的,那沒問題。但如果它們不是唯一的(Springfield AK、Springfield CA、Springfield CO、Springfield GA、Springfield ID、Springfield IL、Springfield IN 等),您將需要更多信息來匹配。此外,拼寫錯誤(springfield vs springfiled)將破壞您規(guī)范化數據庫的原因......
第一步,將新信息添加到新表中。我將其稱為新信息...
newinfo
----------
first_name
last_name
city
因此假設城市名稱是唯一的,下一步是將所有新的唯一城市名稱添加到cities. 如果你有一個唯一的索引cities.name,你可以簡單地
insert ignore into cities('name') select city from newinfo
否則,您必須加入表以查找新值:
insert into cities ('name')
select newinfo.city
from newinfo
left join cities on newinfo.city=cities.name
where cities.name is null
現(xiàn)在您的cities表中有所有可能的城市,您需要插入所有新名稱??紤]如何獲取需要插入的信息:
select newinfo.first_name, new info.last_name, cities.id
from newinfo
inner join cities on new info.city=cities.name
然后,當您對獲得正確的數據感到滿意時,插入它:
insert into users
values('first_name','last_name','city_id')
select newinfo.first_name, new info.last_name, cities.id
from newinfo
inner join cities on new info.city=cities.name
現(xiàn)在您已經完成了表 newinfo 并且可以將其刪除。
- 1 回答
- 0 關注
- 184 瀏覽
添加回答
舉報