Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询每次运行时都返回不同的结果_Sql_Sql Server_Tsql_Sql Order By - Fatal编程技术网

Sql 查询每次运行时都返回不同的结果

Sql 查询每次运行时都返回不同的结果,sql,sql-server,tsql,sql-order-by,Sql,Sql Server,Tsql,Sql Order By,此查询每次都返回相同数量的行,但顺序不同。为什么会发生这种情况 我有更多的过滤器要添加,但我无法通过此步骤 BEGIN DECLARE @lastStatus Varchar(10) SELECT [Job].[Job], [Job].[Part_Number], [Job].[Rev], [Job_Operation].[Description], [Job].[Customer_PO], [Job].[Customer_PO_LN],

此查询每次都返回相同数量的行,但顺序不同。为什么会发生这种情况

我有更多的过滤器要添加,但我无法通过此步骤

BEGIN
DECLARE @lastStatus Varchar(10)
SELECT
    [Job].[Job],
    [Job].[Part_Number],
    [Job].[Rev],
    [Job_Operation].[Description],
    [Job].[Customer_PO],
    [Job].[Customer_PO_LN],
    [Delivery].[Promised_Date],
    [Job_Operation].[Operation_Service],
    [Job].[Note_Text],
    [Job_Operation].[Status],
    [Job_Operation].[Sequence]
INTO [#tmpTbl]
FROM [PRODUCTION].[dbo].[Job_Operation]
    INNER JOIN [Job]
        ON [Job_Operation].[Job]=[Job].[Job]
    INNER JOIN [Delivery]
        ON [Job_Operation].[Job]=[Delivery].[Job]
WHERE [Job].[Status]='Complete'
ORDER BY [Job_Operation].[Job],[Job_Operation].[Sequence]
SELECT *
FROM [#tmpTbl]
DROP TABLE [#tmpTbl]
END

将Order By放在Select*From tmpTbl上,而不是insert上。

因为从tmpTbl选择时没有Order By子句

试一试


不能通过SET命令(即SELECT into)指定订单数据进入表格,这取决于表格创建后是否定义了聚集索引

当您最终从该表中进行选择以获得结果时,您可以控制数据的顺序

SELECT * FROM [#tmpTbl] ORDER BY ....
您好,您可以在表上使用首字母缩写,也可以删除非空格的括号,以便缩短代码。
如果您没有明确告诉SQL如何排序,SQL会猜测您希望它如何排序。将您的ORDERBY子句放在最终Select语句上。这只是真正查询的一部分吗?如果不是的话,为什么你甚至有一个[tmpTbl]?我还没有写完这个查询,但是我注意到每次运行它的结果都不一样。现在我意识到我无法将其排序到temp表中,结果也是一样。但是,在第一次选择时按顺序排序并没有什么坏处。排序毫无意义-它会使查询使用更多资源而没有任何收益。@Dave.Gugg如果temp在这些列中的任何一列上都有索引,则会有所不同。no,当数据放入时,索引将进行排序。如果按索引顺序相反的顺序排序,则必须将其放入表中。你是对的。我在想一件通常不是真的事情,它是按这个顺序摆在桌子上的。
SELECT * FROM [#tmpTbl] ORDER BY ....
SELECT  j.Job,
       ,j.[Part_Number]
       ,j.Rev
       ,j_O.Description
       ,j.Customer_PO
       ,j.[Customer_PO_LN]
       ,d.[Promised_Date]
       ,j_o.[Operation_Service]
       ,j.[Note_Text],
       ,j_o.Status,
       ,j_o.Sequence
       ,j.[Customer_PO],
       ,j.[Customer_PO_LN],
       ,d.[Promised_Date],
       ,j_o.[Operation_Service],
       ,j.[Note_Text],
       ,j_o.[Status],
      [Job_Operation].[Sequence]
      INTO [#tmpTbl]
  FROM [PRODUCTION].[dbo].[Job_Operation] j_o
     INNER JOIN Job j
        ON j_o.Job = j.Job
     INNER JOIN Delivery d
        ON j_o.Job= d.Job
  WHERE j.Status='Complete'
  ORDER BY j_o.Job,j_o.Sequence
  SELECT *
    FROM [#tmpTbl]
    DROP TABLE [#tmpTbl]
  END