2016-12-24 10 views
0

私はmessage_poolというテーブルを持っていて、messageという1つの属性しか持っていません。たとえば:最初の行を削除して最後の行に要素を追加する

hello 1 
hello 2 
hello 3 

私はに最初の行はmyValueへの最後の行を追加、削除します。私は基本的に2つの質問があります。

$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!

myValue 
hello 2 
hello 3 

をしかし、私はこの結果を取得したい:私はまず$query_one$query_twoを実行すると、この結果が起こります。それが最初の行にmyValueを置くが、私は2番目のクエリをスタンドアロンで実行したときに、それが最後の行にmyValueを置くどのように来る

hello 2 
hello 3 
myValue 

+0

非常に簡単な質問ですか? – orkun

+1

ORDER BY式を指定しない限り、一貫した結果は得られません。 SQLテーブルは一般的に順序付けられていません。 –

+0

問題は、挿入するたびにタイムスタンプを挿入することで解決できます。最後に挿入されたid(固有のプライマリキー)を取得し、そのレコードを1つずつインクリメントしてidとともにそのレコードを挿入するなど、さまざまな方法があります。あなたが削除して挿入するたびに。しかし挿入中には、最後にdbからIDを挿入するようにしてください。 – webDev

答えて

0

プライマリキーをテーブルに追加して、自動インクリメントに設定するだけです。すべてのテーブルにプライマリキーを持つことをお勧めします。

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

上記のコードを実行した後、上のクエリの作業は問題ありません。

+0

プライマリキーのみを追加し、データベースから取得するときにIDでリストをソートします。私は働く、ありがとう。 – orkun

関連する問題