Отображение двух таблиц mysql на основе адреса электронной почты - PullRequest
1 голос
/ 09 сентября 2011

У меня есть две таблицы MySQL

Таблица 1

id email  other fields

Таблица 2

id email other fields 

где id для table1 - auto increment MySQL столбец. и в таблице 2 идентификатор только primary key not NULL.

кое-как из-за того, что идентификатор таблицы 2 ошибся. Теперь в обеих таблицах есть несколько записей, и я хочу сделать идентификатор в таблице 2 таким же, как в таблице 1.

давайте рассмотрим пример

Таблица 1 имеет

1 a@a.com
2 b@b.com 

Таблица 2 имеет

1 b@b.com
2 a@a.com 

если я запускаю запрос

update 
  table2 
set 
  id=(select id from table 1 where email="a@a.com") 
where 
  email = "a@a.com"

Я получу ошибку, потому что таблица 2 уже имеет значение идентификатора 2. Теперь, как я могу решить эту проблему?

Я хочу, чтобы идентификатор table2 был таким же, как table1 на основе электронной почты.

Ответы [ 3 ]

1 голос
/ 09 сентября 2011

Как насчет этого:

update table2 set email=(
case
when email='b@b.com' Then 'a@a.com'
when email ='a@a.com' Then 'b@b.com'
end)
1 голос
/ 09 сентября 2011

Предположительно, вы делаете одноразовое исправление.Зайдите в phpMyAdmin или в ваш любимый инструмент для редактирования базы данных и удалите ограничение PK из таблицы2.Исправьте свои записи с помощью этих запросов, затем повторно добавьте ограничение PK.

0 голосов
/ 09 сентября 2011

Вы можете сделать то, что сказал вам @rickythefox, или вы можете достичь своей цели с помощью двух запросов:

  1. Запустите ваш запрос, добавив к table2.id фиксированное количество к table1.id (например, 500.000)
  2. Обновите таблицу2 другим запросом, вычтя фиксированное количество
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...