Я нормализую существующую базу данных. В настоящее время у меня есть два столбца в таблице 1, домен и контейнер с ограниченными отдельными комбинациями (в настоящее время ~ 30 комбинаций этих двух из 1000 записей). Я построил новую таблицу 2, которая содержит все комбинации, с первичным ключом (container_id), автоматически созданным при установке новой записи. Я добавил столбец container_id в таблицу1 и хочу заполнить значения на основе столбца Table1.container.MySQL Как обновить строки на основе существующих значений
На данный момент все имена контейнеров в таблице 2 отличаются друг от друга, но это может измениться в будущем, следовательно, необходимо, чтобы уникальный номер был как ПК.
т.е.
UPDATE Table1
SET container_id = (SELECT Table2.container_id
FROM Table2
WHERE Table2.container = Table1.container)
WHERE EXISTS
(SELECT Table2.container_id
FROM Table2
WHERE Table2.container = Table1.container)
Этот запрос возврат error 1242: subquery returns more than one row.
Могу ли я лай на совершенно неправильное дерево? Таблица 2 должна иметь нулевые повторяющиеся значения.
В вашем заявлении UPDATE есть два подзапроса, и только первая может произвести эту ошибку. Основываясь на условии подзапроса, я могу заключить только одно: ваш догадку о том, что «все имена контейнеров в таблице 2 отличные» больше не верны. –