0

我正在使用 SQLINSERT查询将值存储到表中

询问:

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

4 回答 4

9

表内没有固有的顺序。

插入行时没有预先确定的顺序。如果你做一个

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

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

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

我刚刚阅读了我的 RSS 提要,发现了Michael J. Swart 的一篇很棒的博客文章。一篇文章中关于这个主题的所有最佳答案,太棒了!

于 2013-05-05T11:26:14.050 回答
6

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

于 2013-05-05T11:25:50.167 回答
1

If I am imagining your order entry system correctly, you probably have a list of items in that order id. I encourage you to have an ITEM ID column, but you have to ORDER BY when you SELECT. As an added benefit this ITEM ID helps you, in case you need to UPDATE.

于 2013-05-05T16:02:31.177 回答
1

你的桌子实际上看起来怎么样?你可以这样查看:

SHOW CREATE TABLE tbl_Deta;

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

SELECT * FROM tbl_Deta order by created_at;

但是,正如评论中提到的,自动递增的字段可能是更好的选择。

于 2013-05-05T11:27:54.493 回答