powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Таблица из результата сравнения двух других таблиц
5 сообщений из 5, страница 1 из 1
Таблица из результата сравнения двух других таблиц
    #39463360
Relative0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
В mysql я почти полный ноль, поэтому прошу помощи.

1) Есть две базы данных, в которых есть идентичные по своей структуре таблицы
db1.table1
db2.table2
2) Размер самих таблиц может быть одинаковым, а может отличаться. Если размеры разные, то "лишние" элементы в сравнении не участвуют
3) В каждой таблице есть уникальные значения (nn), которые идентичны в обеих таблицах
4) Размер таблиц около 2000 строк
5) Нужно сравнить две таблицы между собой, и результат должен содержать только столбцы с разными значениями

----
db1.table1
Код: plaintext
1.
2.
3.
nn   data1   data2   data3   data4
01    11      12      13      14
02    21      22      23      24
03    31      32      33      34

db2.table2
Код: plaintext
1.
2.
3.
4.
nn   data1   data2   data3   data4
01    11       00       13      14
02    21      22      23      24
03     55       32       99       34
04    41      42      43      44

Сравниваем... Результат такой:
db2.table3
Код: plaintext
1.
2.
3.
nn   diff_data   db1.data   db2.data
01     data2        12         00
03     data1        31         55
03     data3        33         99

Хотелось бы именно такую результирующую таблицу.
Если это в принципе невозможно, тогда можно так:

db2.table3
Код: plaintext
1.
2.
nn   data1   data2   data3   data4
01    --      00      --      --
03    55      --      99      --
...
Рейтинг: 0 / 0
Таблица из результата сравнения двух других таблиц
    #39463369
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT t11.nn, 
       CASE WHEN t1.data1=t2.data1 THEN '--' ELSE t2.data1 END data1,
       CASE WHEN t1.data2=t2.data2 THEN '--' ELSE t2.data2 END data2,
       CASE WHEN t1.data3=t2.data3 THEN '--' ELSE t2.data3 END data3,
       CASE WHEN t1.data4=t2.data4 THEN '--' ELSE t2.data4 END data4
FROM db1.table1 t1, db2.table2 t2
WHERE t1.nn = t2.nn
  AND (t1.data,t1.data2,t1.data3,t1.data4) NOT IN (t2.data,t2.data2,t2.data3,t2.data4)
...
Рейтинг: 0 / 0
Таблица из результата сравнения двух других таблиц
    #39464075
Relative0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да. Спасибо. Этот вариант работает. Точнее, почти работает, т.к. выдает ошибку
Код: plsql
1.
ERROR 1241 (21000): Operand should contain 4 column(s)


Если вместо
Код: plsql
1.
AND (t1.data1,t1.data2,t1.data3,t1.data4) NOT IN (t2.data1,t2.data2,t2.data3,t2.data4)


написать
Код: plsql
1.
AND (t1.data1) NOT IN (t2.data1)


тогда работает, но не так как нужно, т.е. выдает один только результат вместо всех.
...
Рейтинг: 0 / 0
Таблица из результата сравнения двух других таблиц
    #39464078
Relative0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался. Гугл подсказал, что этот баг нужно фиксить c помощью SELECT
Код: plsql
1.
AND (t1.data1,t1.data2,t1.data3,t1.data4) NOT IN (SELECT t2.data1,t2.data2,t2.data3,t2.data4)



Еще раз спасибо за помощь)
...
Рейтинг: 0 / 0
Таблица из результата сравнения двух других таблиц
    #39464081
Relative0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя вот так
Код: plsql
1.
AND (t1.data1,t1.data2,t1.data3,t1.data4) NOT IN ((t2.data1,t2.data2,t2.data3,t2.data4))


выполняется быстрей.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Таблица из результата сравнения двух других таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]