2011-06-11 31 views
1

私はこれをウェブ上で一般的に見てきましたが、答えは見つかりませんでした。my_sql、1行目を削除する必要があります

ここでは説明しませんが、mysqld データベーステーブルの一番上の行を削除してからページを更新する必要があります。

削除は常に一番上の行であり、行の内容とは無関係に、 は無駄なselectを実行します。

は、私は(私のPHPコードで)これを呼び出すことができるはず私には思える:

mysql_deleterow(0); // delete the top row from the table 

し、それを使って行うこと。しかし、ああ、いいえ - 私が見つけることができるそのような呼び出しはありません。

コンテンツとは無関係にテーブル行を削除する方法はありますか? (あなたが私に尋ねるために衝動を感じ 場合は「なぜあなたはそれをしたいですか?」私は「私はに行かないよな理由で」言うところの上に読み直してください)

答えて

2

あなたは、データベースから行を削除するには、このクエリを使用することができます。

mysql_query('DELETE FROM table_name LIMIT 1'); 

ページを更新するには:

header("Refresh: 0; url=".$_SERVER['PHP_SELF']); 
4

は、それはあなたのために動作します: DELETE FROM your_table [ORDER BY field_name] LIMIT 1;

ORDER BYは省略できます。

0

「一番上の行」のようなものはありません。 IDが最も低いもの、最も古いタイムスタンプなど(自分で作成する必要があります)など、自分自身のものを定義する必要があります。

我々は最低idの一つとして、一番上の行を定義した場合、我々はこのようにそれを削除することができます。

DELETE FROM table ORDER BY id ASC LIMIT 1; 

あなたはまた、ORDER BY句なしでこれを行うことができますが、その場合に行れ削除された取得は未定義です。

DELETE FROM table LIMIT 1; 
1

あなたがDELETE FROM table LIMIT 1を試みることができる:これは、あるいは「一番上の行」を削除しない場合があります。これであなたがしたいことができない場合は、DELETE FROM table WHERE id=(SELECT id FROM table ORDER BY XXXX ASC LIMIT 1) LIMIT 1のようなことができます。この2番目の方法は、どの行が最上位かを制御できるようにします。

+0

実際、なぜか議論するつもりはありませんが、私のコードでは配列のようにテーブルを扱います。SELECT *はmysql_fetch_row()を使用して各行を順番に表示します。したがって、fetch_row()が行を取得するのと同じ順序で、fetch_row()が取得する最初の行を削除したいだけです。それは私がしたいことを説明するのに役立つのでしょうか? – wantTheBest

+0

@ wantthebest、私は行を処理した後、 'TRUNCATE table'を使ってすべての行を削除します。はるかに速くなるでしょう。 –

関連する問題