テーブル内の最初の行を選択し、time
(昇順)で並べ替え、その行を削除します。 2つのクエリを使用したくないのは、別のクライアントが削除される前にその行を選択する可能性があるからです(複数のマシンが異なるネットワークから同時に接続されることになります)。SELECTとDELETE
私は
SELECT * FROM `mytable` ORDER BY `time` LIMIT 1;
DELETE FROM `mytable` ORDER BY `time` LIMIT 1
ような何かを行うことができます考えていた...しかし、私はエラーを得た:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; DELETE * FROM
pending
ORDER BYtime
LIMIT 1' at line 1
これを行うための最善の方法は何ですか?ありがとう。あなたのエラーメッセージを再
insert tmpTable
(id)
select id
from YourTable yt
order by time limit 1;
delete
from YourTable
where ID in (select id from tmpTable);
tmpTableを後で削除する必要がありますか? –
はい(15文字) –
一時テーブルを明示的に作成する必要はありません。派生テーブル 'delete from YourTable from ID =(select ID from(あなたのテーブルorderから時間制限1で選択したID))')を使用することができます。しかし、リエシオの答えはもっと良いようだ。 –