按主键排序

时间:2012-06-06 10:51:45

标签: java sql sql-server sql-order-by primary-key

我正在尝试在某些操作之前和之后对SQLServer数据库的表的数据进行比较。 我将第一个数据保存在一个文件中(实际上我正在保存数据的MD5,但不相关),所以我可以在操作后将新数据与它进行比较。 第一个问题是查询返回的数据并不总是以相同的顺序。

因此,为了解决这个问题,我考虑使用ORDER BY子句对数据进行排序。 这是第二个问题。我正在执行用户定义的查询,因此查询和表可能不同。

所以这就是问题:如何在不知道将使用哪个表的情况下对PRIMARY_KEY(一个或多个)进行排序?

欢迎任何其他解决方案,

感谢您的时间和精力,

2 个答案:

答案 0 :(得分:3)

您可以使用动态sql并查询元表以发现主键是什么

SELECT column_name
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE OBJECTPROPERTY(OBJECT_ID(constraint_name), 'IsPrimaryKey') = 1
AND table_name = 'Person'

使用动态sql,您可以像字符串一样构造sql语句并将其交给sp_executeSQL

http://msdn.microsoft.com/en-us/library/ms188001.aspx

的更多信息

答案 1 :(得分:0)

  

我正在尝试对表的数据进行比较   一些操作之前和之后的SQLServer数据库。

如果您使用的是SQL Server 2008,则可以使用CDC

您真的需要通过主键订购吗?如果没有,你可以做到

ORDER BY 1, 2, 3
无论列名是什么,

将按列1,2和3排序。 如果您在表的第一列上有主键,那么这将适用于PK