2016-12-24 21 views
0

我有一个表message_pool,它只有一个属性message。例如:删除第一行并添加元素到最后一行iny MySQL

hello 1 
hello 2 
hello 3 

我想删除第一行添加myValue最后一行。我基本上有两个疑问。

$query_one = "DELETE FROM message_pool LIMIT 1"; 
$query_two = "INSERT INTO message_pool VALUES ('$myValue');" 

如果我只运行$query_one这样的结果发生了:

hello 2 
hello 3 

如果我只运行$query_two这个结果发生了:

hello 1 
hello 2 
hello 3 
myValue 

ODLY!如果我先运行$query_one然后$query_two这个结果发生了:

myValue 
hello 2 
hello 3 

但我想这个结果得到的。

hello 2 
hello 3 
myValue 

为什么它把myValue第一行,但是当我运行第二个查询独立位置它把myValue到最后一排?

+0

这是一个非常简单的问题吗? – orkun

+1

除非您指定ORDER BY表达式,否则不会得到一致的结果。 SQL表通常是无序的。 –

+0

这个问题可以通过每次插入时插入时间戳来解决。有很多方法就像你可以得到最后插入的id(唯一的主键),然后将其加1,并将该记录与id一起插入。每次删除并插入。但插入时确保你从数据库中获得最后插入的ID。 – webDev

回答

0

只需将一个主键添加到您的表并将其设置为自动增量。在每个表中使用主键是一个好习惯。

ALTER TABLE `message_pool` ADD `id` INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`); 

上述查询在您执行上述代码后正常工作。

+0

我只添加主键,并且在从数据库中检索时,通过id对列表进行排序。我工作,谢谢。 – orkun

相关问题