Bir tablodaki ilk satırı seçmek, time
(artan) ile sıralamak ve sonra o satırı silmek istiyorum. Başka bir müşterinin silinmeden önce bu satırı seçebilme olasılığı olduğu için iki sorgu kullanmak istemiyorum (farklı ağlardan bir kerede birden fazla makine bağlanacaktır).SELECT ve DELETE
ben
SELECT * FROM `mytable` ORDER BY `time` LIMIT 1;
DELETE FROM `mytable` ORDER BY `time` LIMIT 1
gibi bir şey yapabileceğini düşünüyordum ... ancak bir hata var:
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
Bunu yapmanın en iyi yolu nedir? Teşekkürler. Hata mesajının yeniden
insert tmpTable
(id)
select id
from YourTable yt
order by time limit 1;
delete
from YourTable
where ID in (select id from tmpTable);
TmpTable'ın daha sonra veya daha sonra düşürülmesi gerekiyor mu? –
Evet (15 karakter) –
Geçici olarak bir tablo oluşturmanıza gerek yoktur. Türetilmiş bir tabloyu kullanabilirsiniz '' IDT'den siliniz. = (ID'yi seçin (zaman sınırı 1'den YourTable siparişinizdeki kimliği seçin) t); '. Ancak Riedsio'nun cevabı daha da iyi görünüyor. –