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

时间:2018-07-21 14:47:19

标签: mysql sql database mysqli

我有一个微控制器当前正在将数据发送到mysql数据库,并且使用\b可以正常工作。问题在于此方法附加到末尾。

有没有办法将mysql附加到第一行而不是最后一行?

例如,如果我当前的mysql表有10行(第1-10行),则新数据将插入到第1行,而其他10行将被推送到第2-11行。这有可能吗?我不是编程新手,但我是MySQL新手!

2 个答案:

答案 0 :(得分:1)

默认情况下,不对MySql表进行排序。通常,对表的简单查询可以按创建的顺序返回行,但这不是合同。您一定不能依靠它。

确保按特定顺序获取行的更好方法是将关键行设置为自动递增(只有在创建mysql中的表:

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

之后,您可以在不使用自动递增字段(自动)的情况下插入行

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

答案 1 :(得分:0)

只是补充其他答案,使观点很明确。

在像MySQL这样的SQL数据库中,没有像表行的顺序那样的东西。这是SQL规范的一部分,它使数据库引擎可以自由地[内部]整理所有想要的数据,以保持其安全性并生成快速查询。简单来说:“ SQL数据库不是Excel工作表。”

如果要按特定顺序检索数据,只需在ORDER BY语句中使用SELECT指定首选顺序。