我有一个微控制器目前正在发送数据到一个mysql数据库,它是良好的工作使用 mysqli_insert(X,X) . 问题是这个方法附加到末尾。有没有办法让mysql附加到第一行而不是最后一行?例如,如果我当前的mysql表有10行,第1-10行,那么新数据将插入到第1行,其他10行将推送到第2-11行。这是可能的吗?我不是新的编程,但我是新的mysql谢谢大家!
mysqli_insert(X,X)
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
drnojrws2#
只是为了补充另一个答案,把重点说清楚。在像mysql这样的sql数据库中,表行的顺序是不存在的。这是sql规范的一部分,它允许数据库引擎(在内部)自由地处理它想要的所有数据,以保证数据的安全并生成快速查询。简单地说:“sql数据库不是excel工作表。”如果要按特定顺序检索数据,只需使用 ORDER BY 在你的 SELECT 声明。
ORDER BY
SELECT
2条答案
按热度按时间nukf8bse1#
默认情况下,mysql表没有排序。通常,对表的简单查询可以按创建的顺序返回行,但这不是约定。你不能依赖这个。
确保按特定顺序获取行的更好方法是将键行指定为自动增量(只有在mysql中创建表时才能这样做:
之后可以插入行而不使用autoincremental字段(是自动的)
然后,可以按照使用创建的顺序选择字段
并使用子代顺序按与创建相反的顺序选择字段:
此外,如果只想选取最后n行,可以使用limit子句:
但如果需要按创建顺序获取最后n行,则需要嵌套查询:
drnojrws2#
只是为了补充另一个答案,把重点说清楚。
在像mysql这样的sql数据库中,表行的顺序是不存在的。这是sql规范的一部分,它允许数据库引擎(在内部)自由地处理它想要的所有数据,以保证数据的安全并生成快速查询。简单地说:“sql数据库不是excel工作表。”
如果要按特定顺序检索数据,只需使用
ORDER BY
在你的SELECT
声明。