Сравните столбцы таблицы на основе их относительного положения - PullRequest
0 голосов
/ 26 октября 2011

У меня проблема со сравнением двух выборок в PostgreSQL.Я выполняю эти выборки с помощью JDBC, затем создаю новые таблицы, вставляя данные из набора результатов в новую таблицу.Я делаю это потому, что хочу избежать столбцов с таким же именем, как «count».Затем я должен сравнить данные в этих таблицах.

Проблема в том, что эти таблицы должны быть одинаковыми, если есть одинаковые данные с разным порядком столбцов.Например, если в таблицах t1 и t2 имеется 3 столбца (1, 2, 3), эти таблицы совпадают, если t1.1 = t2.2 и t1.2 = t2.1 и t1.3 = t2.3.

1 Ответ

2 голосов
/ 26 октября 2011

Порядок столбцов в строке определяется во время создания.Если вы сделаете

SELECT * FROM tbl;

или

TABLE tbl;

, вы получите порядок столбцов, с которым вы создали таблицу.Если вы называете столбцы в вашем SELECT, вы получаете столбцы в явном порядке.

Вы должны всегда прописывать столбцы, которые вы используете для такой операции, как ваша.Это может сломаться, если позже вы измените порядок столбцов в одной из ваших таблиц.Не полагайтесь на *.

Порядок строк в SELECT равен неопределенным , если вы не включите предложение ORDER BY,Если вы хотите определенный заказ, вы должны ORDER BY указать основной или уникальный столбец (или уникальную комбинацию столбцов).Если вы упорядочиваете по неуникальному набору столбцов, строки в группах одного и того же ключа снова находятся в неопределенном порядке.

SELECT col1, col2, col3 FROM tbl
ORDER BY <unique column or set of oclumns>;

Прочтите руководство по предложению ORDER BY .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...