在mysql中插入一行后,最新的一行根据日期往上爬

After inserting a row in mysql, the latest row climbs up based on date

在 table 中插入一行不会使其成为最后一行,而是在某些行之上插入一行。

insert into table (revenueSB40, revenueSM40, sum, eedate) 
      values(100,200,300,'2015-05-17');

最后几行:

| 41200 | 80620 | 121820 | 2015-05-11 00:00:00 |   
| 35440 | 86100 | 121540 | 2015-05-12 00:00:00 |   
| 30160 | 62600 | 92760  | 2015-05-13 00:00:00 |  
| 19800 | 31780 | 51580  | 2015-05-16 00:00:00 |  
| 58480 | 90860 | 149340 | 2015-05-15 00:00:00 |  
| 59440 | 52500 | 111940 | 2015-05-14 00:00:00 |

RDBMS tables 表示无序集。没有 "the first row of a table" 或 "the last row of the table" 这样的东西。当您发出不带 order by 子句的 select 语句时,数据库可能会 return 以它认为合适的任何顺序排列行("fit",通常表示 "fastest") .即使 table 中的数据没有改变,这些结果的顺序也可能会根据内部缓存的状态或执行的维护操作(例如,重建索引)而改变。

虽然数据库通常按插入顺序 return 行(尤其是对于没有任何索引的小 tables),但这绝对不是强制性的,你应该 依赖此行为。

如果您希望对 returned 行的顺序有任何保证,您必须使用 order by 子句明确说明您需要的顺序,例如:

SELECT   *
FROM     `table`
ORDER BY revenueSB40