我正在尝试在某些操作之前和之后对SQLServer数据库的表的数据进行比较。 我将第一个数据保存在一个文件中(实际上我正在保存数据的MD5,但不相关),所以我可以在操作后将新数据与它进行比较。 第一个问题是查询返回的数据并不总是以相同的顺序。
因此,为了解决这个问题,我考虑使用ORDER BY子句对数据进行排序。 这是第二个问题。我正在执行用户定义的查询,因此查询和表可能不同。
所以这就是问题:如何在不知道将使用哪个表的情况下对PRIMARY_KEY(一个或多个)进行排序?
欢迎任何其他解决方案,
感谢您的时间和精力,
答案 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
的更多信息答案 1 :(得分:0)
我正在尝试对表的数据进行比较 一些操作之前和之后的SQLServer数据库。
如果您使用的是SQL Server 2008,则可以使用CDC
您真的需要通过主键订购吗?如果没有,你可以做到
ORDER BY 1, 2, 3
无论列名是什么,将按列1,2和3排序。 如果您在表的第一列上有主键,那么这将适用于PK