以非字母顺序存储数据

时间:2013-05-05 11:17:07

标签: sql sql-server sql-server-2008

我将值存储到带有INSERT查询

的表中

查询:

INSERT INTO tbl_Deta ([ID NO], [OR NO], [ITEM DESCRIPTION], QUANTITY, UNIT)
VALUES (6,0,'ring gauge',44,nos)

INSERT INTO tbl_Deta ([ID NO], [OR NO], [ITEM DESCRIPTION], QUANTITY, UNIT)
VALUES (6,0,'asd',14,ads)

INSERT INTO tbl_Deta ([ID NO], [OR NO], [ITEM DESCRIPTION], QUANTITY, UNIT)
VALUES (6,0,'amd',33,asd)

结果:

[ID NO]  [OR NO]  [ITEM DESCRIPTION]  QUANTITY  UNIT
  6        0             asd             14     ads 
  6        0            ring gauge       44     Nos 
  6        0             amd             33     asd 

我希望结果与插入数据的顺序相同,而不是按字母顺序排列。

4 个答案:

答案 0 :(得分:9)

表格中没有固有的顺序。

插入行时没有预先建立的顺序。如果你做了

SELECT [ID NO], [OR NO], [ITEM DESCRIPTION], QUANTITY, UNIT FROM tbl_Deta

如果没有ORDER BY,则不会使用特定的顺序。如果需要某些特定的排序结果,则必须使用ORDER BY子句。您可以使用主键并根据其值进行排序。

有几个问题/答案可以帮助您更好地理解这一点:

我只是阅读我的RSS源并找到awesome blog entry by Michael J. Swart。在一个条目中关于这个主题的所有最佳答案,太棒了!

答案 1 :(得分:6)

按照插入顺序检索行不是标准的保证SQL功能。我建议您添加另一个可以订购的列,例如标识/自动编号整数字段,或者插入日期。

答案 2 :(得分:1)

你的桌子看起来怎么样?你可以这样看:

SHOW CREATE TABLE tbl_Deta;

如果您有一个存储创建日期的列(通常名为“created_at”),您可以按创建日期轻松订购:

SELECT * FROM tbl_Deta order by created_at;

但是,正如评论中所提到的,自动增量字段可能是更好的方法。

答案 3 :(得分:1)

如果我正确想象您的订单输入系统,您可能在该订单ID中有一个项目列表。我们建议您使用ITEM ID列,但ORDER BY时必须SELECT。作为额外的好处,此ITEM ID可以帮助您,以防您需要UPDATE