【问题标题】:When inserting new record in existing table tt goes up instead of down在现有表中插入新记录时,tt上升而不是下降
【发布时间】:2019-08-14 00:30:59
【问题描述】:

我已经创建了表我想添加额外的行时添加额外的行创建的额外行上升。我想要那行在底部。

MariaDB [armydetails]> insert into armydetails values('r05','Shishir','Bhujel','Jhapa','9845678954','male','1978-6-7','1994-1-3','ran5','Na11088905433');
Query OK, 1 row affected (0.17 sec)

MariaDB [armydetails]> select * from armydetails;
+-------+---------+---------+-----------+------------+--------+------------+------------+--------+----------------+
| regNo | fName   | lName   | address   | number     | gender | DOB        | DOJ        | rankID | accountNo      |
+-------+---------+---------+-----------+------------+--------+------------+------------+--------+----------------+
| r05   | Shishir | Bhujel  | Jhapa     | 9845678954 | male   | 1978-06-07 | 1994-01-03 | ran5   | Na11088905433  |
| ro1   | Milan   | Katwal  | Dharan    | 9811095122 | Male   | 1970-01-03 | 1990-01-01 | ran1   | Na11984567823  |
| ro2   | Hari    | Yadav   | Kathmandu | 9810756436 | male   | 1980-06-07 | 2000-05-06 | ran2   | Na119876678543 |
| ro3   | Khrisna | Neupane | Itahari   | 9864578934 | male   | 1980-02-02 | 2001-01-07 | ran3   | Na11954437890  |
| ro4   | Lalit   | Rai     | Damak     | 9842376547 | male   | 1989-05-09 | 2005-01-02 | ran4   | Na11064553221  |
+-------+---------+---------+-----------+------------+--------+------------+------------+--------+----------------+
5 rows in set (0.00 sec)

MariaDB [armydetails]>

【问题讨论】:

  • 表记录是无序的...除非你使用ORDER BY。见this famouse Tom Kyte blog post
  • 但在某些表格中它是如何排序的
  • 如果每个插入都是新的并且应该遵循一个流水号,我建议你添加另一个带有AUTO_INCREMENT字段的列
  • 看起来,其他记录有'ro1...ro4'(字母表),而插入的第一行有'r05'(0 - 数字零)。当您插入 'ro5' 时,也许您期待并且会看到它位于底部。

标签: mysql sql xampp


【解决方案1】:

SQL 2011 publication from ISO/IEC 9075 说:

一般来说,表中的行是无序的;但是,如果表是立即包含“order by 子句”的 a 的结果,则表中的行是有序的。

在 SQL 数据库中,记录没有基础的默认排序。关系数据库基本上将表存储为一堆无序的记录。

当记录是SELECTed 而没有ORDER BY 子句时,它们以未定义的顺序出现,这绝不保证在后续查询中保持一致(包括多次执行相同的查询)。对于 MySQL 对于其他 RDBMS 也是如此。

正确排序记录的唯一方法是使用ORDER BY 子句,例如:

select * from armydetails order by regNo

推荐讲座:Tom Kyte Blog : Order in the Court!.

【讨论】:

    【解决方案2】:

    您可以简单地将 ORDER BY 子句添加到您的语句中,如下所示:

    SELECT * FROM armydetails ORDER BY regNO DESC;
    

    【讨论】:

      猜你喜欢
      • 2014-12-16
      • 1970-01-01
      • 2014-09-24
      • 2022-10-23
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 2014-05-18
      相关资源
      最近更新 更多