我在比较PostgreSQL中的两个选择时遇到问题。我正在通过JDBC执行这些选择,然后通过将结果集中的数据插入到新表来创建新表。我这样做是因为我想避免使用相同名称的列,例如“count”。然后我必须比较这些表中的数据。
问题是如果存在具有不同列顺序的相同数据,则这些表应该相同。例如,如果表t1
和t2
中有3列(1,2,3),则t1.1 = t2.2
和t1.2 = t2.1
以及t1.3 = t2.3
这些表相同}。
答案 0 :(得分:2)
行中列的顺序是在创建时确定的。如果你做了
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 clause上的手册。