Как определить, когда SELECT * совпадает?

#java #python #sql #database

#java #питон #sql #База данных

Вопрос:

Я хотел бы создать очень простую функцию, чтобы увидеть, имеет ли запрос, выполненный в момент времени X, ту же структуру набора результатов (игнорируя порядок и данные), что и предыдущий запрос. Это состоит из двух компонентов:

  1. Являются ли неупорядоченные проекции выбора одинаковыми?

    SELECT firstname, lastname FROM table

    Это то же самое , что и:

    SELET lastname, firstname FROM table WHERE date="2014-01-01"

  2. Являются * ли прогнозы одинаковыми? Например:

    SELECT * FROM table

    Запущенный сейчас, это может быть не то же самое, что этот же запрос, выполненный через 15 минут, как только я добавлю два столбца в таблицу.

Что может быть хорошим способом решить, совпадают ли два результирующих набора, не выполняя весь запрос целиком? Или это вообще возможно?

Возможно, самым грубым подходом было бы просто добавить a limit 1 , а затем проверить совпадающие [Name Type] ‘ы.


(Пометка с помощью python, поскольку это язык, с которым я больше всего знаком, но открыт для предложений / ответов на любом языке).

Комментарии:

1. В ваших описаниях для второго случая, что вы подразумеваете под полем? Вы имеете в виду столбцы или записи? Вы хотите проверить только структуру столбцов, верно?

2. @AliTou да, только столбцы, сами значения / данные меня не волнуют. Т.Е., Если бы кто-то сделал a truncate table , это ничего бы не изменило.

3. На каком языке вы предлагаете создать такую функцию? Стандартный SQL не входит в число ваших вариантов, но это было бы возможно на различных хост-языках, использующих встроенный SQL.

4. @JohnBollinger подойдет любой язык (python, java и т. Д.). Хотя в Stackoverflow кажется, что если бы я пометил такой вопрос Java , я бы почти сразу получил 10 отрицательных голосов, жалуясь, что вопрос недостаточно конкретен.

5. В общем, вы не узнаете ответа, пока не выполните оба запроса и не сравните. Сама база данных также не всегда знает 100%, поскольку статистика не всегда полностью актуальна.