mysql追加到第一行,移动其他行

bhmjp9jg  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(754)

我有一个微控制器目前正在发送数据到一个mysql数据库,它是良好的工作使用 mysqli_insert(X,X) . 问题是这个方法附加到末尾。
有没有办法让mysql附加到第一行而不是最后一行?
例如,如果我当前的mysql表有10行,第1-10行,那么新数据将插入到第1行,其他10行将推送到第2-11行。这是可能的吗?我不是新的编程,但我是新的mysql谢谢大家!

nukf8bse

nukf8bse1#

默认情况下,mysql表没有排序。通常,对表的简单查询可以按创建的顺序返回行,但这不是约定。你不能依赖这个。
确保按特定顺序获取行的更好方法是将键行指定为自动增量(只有在mysql中创建表时才能这样做:

CREATE TABLE mytable (
    id int NOT NULL AUTO_INCREMENT,
    name varchar(255) NOT NULL,
    amount int,
    PRIMARY KEY (id)
);

之后可以插入行而不使用autoincremental字段(是自动的)

INSERT INTO mytable ( name, amount) VALUES ('John', 23);

然后,可以按照使用创建的顺序选择字段

SELECT * FROM mytable ORDER BY id;

并使用子代顺序按与创建相反的顺序选择字段:

SELECT * FROM mytable ORDER BY id DESC;

此外,如果只想选取最后n行,可以使用limit子句:

SELECT * FROM mytable ORDER BY id DESC LIMIT 10;

但如果需要按创建顺序获取最后n行,则需要嵌套查询:

SELECT * FROM (
  SELECT * FROM mytable ORDER BY id DESC LIMIT 10
) t ORDER BY id ASC
drnojrws

drnojrws2#

只是为了补充另一个答案,把重点说清楚。
在像mysql这样的sql数据库中,表行的顺序是不存在的。这是sql规范的一部分,它允许数据库引擎(在内部)自由地处理它想要的所有数据,以保证数据的安全并生成快速查询。简单地说:“sql数据库不是excel工作表。”
如果要按特定顺序检索数据,只需使用 ORDER BY 在你的 SELECT 声明。

相关问题