【问题标题】:Issue in sql server with join query带有连接查询的sql server中的问题
【发布时间】:2015-07-13 18:18:58
【问题描述】:

我有 四个表 用于加入我正在尝试在 sql server 中加入视图。我已经成功地完成了连接查询并使用连接查询从多个表中检索数据。但是我执行相同的查询 sql server 每次都显示不同的结果。

SELECT DISTINCT 
               dbo.tbl_verifyFinger2.ID
             , dbo.tbl_verifyCnicDetails.fID
             , dbo.tbl_verifyCnicDetails.colGRName
             , dbo.tbl_verifyFinger2.colCompanyID
             , dbo.tbl_verifyAvailableFingers.colCNIC
             , dbo.tbl_agent.agent_id
             , dbo.tbl_agent.colIMSI
             , dbo.tbl_verifyFinger2.colDate
             , dbo.tbl_verifyFinger2.colStatusMessage
FROM dbo.tbl_verifyFinger2 
INNER JOIN dbo.tbl_verifyCnicDetails      
                         ON dbo.tbl_verifyFinger2.ID = dbo.tbl_verifyCnicDetails.fID 
INNER JOIN dbo.tbl_verifyAvailableFingers 
                         ON dbo.tbl_verifyFinger2.colCNIC = dbo.tbl_verifyAvailableFingers.colCNIC 
INNER JOIN dbo.tbl_agent 
                         ON dbo.tbl_verifyAvailableFingers.colIMSI = dbo.tbl_agent.colIMSI

【问题讨论】:

  • 没有视图定义是不可能回答你的问题的。我只能猜测那里使用了某种窗口函数,例如 ROW_NUMBER 之类的
  • 谢谢,但每次执行此查询后,所有 sql server 结果都会发生变化
  • 该查询中是否只有表?
  • 是的,该查询中只有表
  • 您至少需要显示查询中使用的列的定义。

标签: sql-server inner-join distinct


【解决方案1】:

由于 SQL Server 不允许在视图中使用 ORDER By 子句,为了每次都获得相同的结果预览,您必须在外部 SELECT 查询中包含 ORDER BY 子句,在查询结束时。

当然,ORDER BY子句中的列要谨慎选择,因为它必须是确定性的,保证每次排序的结果都是一样的,上下移动的行不会出现更多。

SELECT
    *
FROM schema_name.view_name AS v
ORDER BY
    v.column_name (ASC|DESC) --If ommiting directions, ASC is the default

【讨论】:

    猜你喜欢
    • 2019-05-27
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2014-12-01
    • 2014-06-04
    相关资源
    最近更新 更多