比较表列的相对位置

时间:2011-10-26 12:22:26

标签: sql postgresql jdbc

我在比较PostgreSQL中的两个选择时遇到问题。我正在通过JDBC执行这些选择,然后通过将结果集中的数据插入到新表来创建新表。我这样做是因为我想避免使用相同名称的列,例如“count”。然后我必须比较这些表中的数据。

问题是如果存在具有不同列顺序的相同数据,则这些表应该相同。例如,如果表t1t2中有3列(1,2,3),则t1.1 = t2.2t1.2 = t2.1以及t1.3 = t2.3这些表相同}。

1 个答案:

答案 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上的手册。

相关问题