Форум пользователей MySQL
Всем привет. Как обычно просьба ламера составить запрос
Есть БД «main» и «old». В первой базе таблица «members», во второй «users». Нужно сравнить значения в таблицах в полях «name » и «username» соответственно, и если в таблице users нет записи соответствующей полю в таблице members, то вывести результат этого поля. Надеюсь понятно объяснил. Заранее спасибо за ответы.
#2 26.02.2013 21:58:58
deadka Администратор Зарегистрирован: 14.11.2007 Сообщений: 2416
Re: Сравнение данных из 2 таблиц разных БД
SELECT `name` FROM `main`.`members` WHERE `name` NOT IN ( SELECT `username` FROM `old`.`users` ) ;
Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли.
#3 11.07.2013 09:13:16
collerperm Участник Откуда: Пермь Зарегистрирован: 26.02.2013 Сообщений: 2
Re: Сравнение данных из 2 таблиц разных БД
Спасибо, помогло. Если можно, немного оффтопа в рамках моей темы.
В рамках одной базы есть 2 таблицы — users и profile
В каждой из них есть одинаковые поля user_id
Нужно добавить строку в таблицу profile если она не существует с полем user_id= user_id.users плюс пару ячеек со статичными данными.
#4 11.07.2013 09:52:56
vasya Архат Откуда: Орел Зарегистрирован: 07.03.2007 Сообщений: 5817
Re: Сравнение данных из 2 таблиц разных БД
select u.user_id from `users` u left join profile p using ( user_id ) where p.user_id is null ; — вернет список user_id, которые есть в первой таблице и отсутствуют во второй.
Сравнить две таблицы в MySQL
В этой статье вы узнаете, как сравнивать две таблицы, чтобы найти несопоставимые записи.
При переносе данных нам часто приходится сравнивать две таблицы, чтобы определить запись в одной таблице, у которой нет соответствующей записи в другой таблице.
Например, у нас есть новая база данных, схема которой отличается от устаревшей базы данных. Наша задача — перенести все данные из устаревшей базы данных в новую и убедиться, что данные были перенесены правильно.
Чтобы проверить данные, нам нужно сравнить две таблицы, одну в новой базе данных и одну в устаревшей базе данных, и идентифицировать несопоставленные записи.
Предположим, у нас есть две таблицы: my_table и you_table. Следующие шаги сравнивают две таблицы и идентифицируют несопоставленные записи:
Во-первых, используйте оператор UNION для объединения строк в обеих таблицах; включать только столбцы, которые нужно сравнить. Возвращенный набор результатов используется для сравнения.
SELECT my_table.pk, my_table.c1 FROM my_table UNION ALL SELECT you_table.pk, you_table.c1 FROM you_table
Во-вторых, сгруппируйте записи на основе первичного ключа и столбцов, которые необходимо сравнить. Если значения в столбцах, которые необходимо сравнить, идентичны, COUNT(*) возвращается 2, в противном случае COUNT(*) возвращается 1.
Смотрите следующий запрос:
SELECT pk, c1 FROM ( SELECT my_table.pk, my_table.c1 FROM my_table UNION ALL SELECT you_table.pk, you_table.c1 FROM you_table ) t GROUP BY pk, c1 HAVING COUNT(*) = 1 ORDER BY pk
Если значения в столбцах, участвующих в сравнении, идентичны, строка не возвращается.
Пример сравнения двух таблиц в MySQL
Давайте посмотрим на пример, который имитирует шаги выше.
Сначала создайте 2 таблицы с похожей структурой:
CREATE TABLE my_table( id int auto_increment primary key, title varchar(255) ); CREATE TABLE you_table( id int auto_increment primary key, title varchar(255), note varchar(255) );
Во-вторых, вставьте некоторые данные в таблицы my_table и you_table:
INSERT INTO my_table(title) VALUES('row 1'),('row 2'),('row 3'); INSERT INTO you_table(title,note) SELECT title, 'data migration' FROM my_table;
В-третьих, сравните значения id и столбца title обеих таблиц:
SELECT id,title FROM ( SELECT id, title FROM my_table UNION ALL SELECT id,title FROM you_table ) tbl GROUP BY id, title HAVING count(*) = 1 ORDER BY id;
Возвращенных строк не будет, потому что нет несоответствующих записей.
В-четвертых, вставьте новую строку в таблицу you_table:
INSERT INTO you_table(title,note) VALUES('new row 4','new');
В-пятых, выполните запрос, чтобы снова сравнить значения столбца заголовка в обеих таблицах. Новая строка, которая является несопоставленной строкой, должна вернуться.
В этой статье вы узнали, как сравнивать две таблицы на основе определенных столбцов, чтобы найти несопоставленные записи.
filin49 / compare-two-mysql-databases.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
mysqldump —skip-comments —skip-extended-insert -u root -p dbName 1> file1.sql |
mysqldump —skip-comments —skip-extended-insert -u root -p dbName 2> file2.sql |
diff file1.sql file2.sql |
Сравниваем две базы Mysql. Как сравнить базы Mysql ?
Если вам необходимо сравнить две базы Mysql, можно использовать следующие методы:
1. Установить программу , и сравнить базы в ней.
2. Сравнить между собой два дампа между собой:
mysqldump —skip-comments —skip-extended-insert -u root -p dbName1>file1.sql
mysqldump —skip-comments —skip-extended-insert -u root -p dbName2>file2.sql
diff file1.sql file2.sql
Если у вас есть проблемы с установкой и настройкой mysql, обращайтесь — [email protected]
Похожие статьи:
- Как перекодировать базу Mysql в другую кодировку ?
- Переустановка Mysql 5 на Linux
- Сжатие shrink базы данных mysql
- Как узнать дату создания базы данных mysql?
Добавить комментарий Отменить ответ
УСЛУГИ
- Администрирование серверов
- Установка и настройка сервера
- Highload веб сервер
- Оптимизация производительности сервера и сайта
- Администратор DevOPS
- Безопасность сервера и сайта
- IT Аудит сайта и сервера
- IP телефония
- Разработка и техподдержка битрикс
- Система заявок Service Desk
- Переход в облако
- Аутсорсинг ИТ инфраструктуры
О КОМПАНИИ
Наша компания состоит из команды Linux/Windows администраторов с опытом более 15 лет, DevOps инженеров, специалистов в области информационной безопасности, виртуализации и облачных систем. Занимаемся круглосуточной поддержкой высоконагруженных сайтов и серверов. Выполняем проектирование, построение и поддержку наземных, облачных и гибридных инфраструктур.
Свежие записи
- ПОЧЕМУ АУТСОРСИНГ DEVOPS ЛУЧШЕ, ЧЕМ ШТАТНЫЙ СОТРУДНИК
- Использование Active Directory в Azure для повышения производительности
- ИЗУЧЕНИЕ ПРЕИМУЩЕСТВ ИСПОЛЬЗОВАНИЯ AZURE ДЛЯ УСПЕХА В БИЗНЕСЕ
- ОСНОВНЫЕ ИНСТРУМЕНТЫ ДЛЯ DEVOPS В ОБЛАКЕ
- ЭФФЕКТИВНЫЙ ПЕРЕНОС ДАННЫХ В AZURE