Я хочу сделать sql-запрос, который будет вставлять значения из одной таблицы в другую таблицу, проверяя, где условие на 1-й таблице.Вставить в ... select from .... query with where condition
Я должен проверить, что эта строка присутствует ранее в 1-й таблице или нет. Если нет, то добавить иначе не добавлять.
Существует запрос "insert into select from" pattern в sql.
Я пробовал следующий запрос. Но он вставляет много дубликатов.
INSERT INTO
company_location (company_id, country_id, city_id)
SELECT
ci.company_id, hq_location, hq_city
FROM
company_info ci, company_location cl
WHERE
ci.company_id <> cl.company_id
AND cl.country_id <> ci.hq_location
AND cl.city_id <> ci.hq_city;
Дубликат избежать означает, что набор (company_id, COUNTRY_ID, CITY_ID) не следует добавить снова. И я должен добавить из более 4 таблиц в эту таблицу.
Также мне нужен запрос для удаления дубликатов из company_location. т. е. комбинация (company_id, country_id, city_id) должна существовать только один раз. Храните только один кортеж и удалите другие строки.
Разделите проблему на две части: сначала определите подходящий запрос, который возвращает значения, которые вы хотите, затем используйте этот запрос для вставки значений во вторую таблицу. Похоже, что «вставить в» часть вопроса не имеет значения. –
@ No'am Newman: В sql есть запрос «Вставить в выборку». –
Есть ли дубликаты в 'company_info'? Кроме этого, я не вижу, как этот запрос будет вставлять запись, которая уже существует в 'company_location'. – vhallac