Как я могу найти идентичные таблицы в MySQL и PHP? - PullRequest
2 голосов
/ 12 октября 2010

Есть ли простой способ найти идентичные таблицы, то есть ту же структуру и данные, используя MySQL и PHP?Я сомневаюсь, что для этого есть команда MySQL, но как бы вы порекомендовали это сделать?

Ответы [ 2 ]

2 голосов
/ 12 октября 2010

Без дополнительной информации о структуре или размере ваших данных вы можете сделать это:

SELECT IF(COUNT(*) = (SELECT COUNT(*) FROM table1) AND COUNT(*) = (SELECT COUNT(*) FROM table2),1,0) AS result FROM
(
    SELECT * FROM table1
    UNION
    SELECT * FROM table2
) tables_joined

Но учтите, это не идеальное решение.Для больших наборов данных это может занять некоторое время

Это не проверено, но общая предпосылка ответа:

  • Соедините две таблицы.Если структура является согласованной (на базовом уровне - это не включает типы данных, индексы и т. Д.), То ошибок не будет
  • После объединения сравните количество строк с количеством строк водна из таблиц
  • Если количество строк равно, то данные идентичны (потому что в противном случае объединение вернуло бы две строки).
  • Вывести 1, если идентично, или 0, если нет.
1 голос
/ 12 октября 2010

Одинаковые таблицы ДОЛЖНЫ иметь идентичные идентификаторы, поэтому вам просто нужно проверить, есть ли разница между идентификаторами в обеих таблицах, поэтому следующий код должен быть полезен:

Select count(*) from table1 where table1_id IN (select table2_id from table2); 

, если результат равен 0, тогдаразница есть.

Лучший способ увидеть и проверить структуру таблицы, например (представьте, что у нас есть 2 таблицы с именами orod1 и orod2):

select table_name,column_name,data_type 
from information_schema.columns where table_schema='orod_schema' and table_name ='orod%';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...