【问题标题】:order by primary key按主键排序
【发布时间】:2012-06-06 10:51:45
【问题描述】:

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

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

所以问题来了:如果事先不知道将使用哪个表,我如何按 PRIMARY_KEY(一个或多个)排序??

也欢迎任何其他解决方案,

感谢您的时间和精力,

【问题讨论】:

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


    【解决方案1】:

    您可以使用动态 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

    【讨论】:

      【解决方案2】:

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

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

      你真的需要按主键排序吗?如果没有,你可以这样做

      ORDER BY 1, 2, 3
      

      无论列的名称如何,都将按列 1、2 和 3 排序。 如果您的主键位于表的第一列,这将适用于 PK

      【讨论】:

      • 谢谢,但我尝试为不同版本做最灵活的解决方案,是的,我确实需要按主键排序,对于您的解决方案,我需要事先知道桌子。无论如何,谢谢... ;)
      猜你喜欢
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      • 2012-08-04
      • 1970-01-01
      • 2010-11-09
      • 2016-08-31
      相关资源
      最近更新 更多