테이블에서 첫 번째 행을 선택하고 time
(오름차순)으로 정렬 한 다음 해당 행을 삭제하고 싶습니다. 다른 클라이언트가 삭제되기 전에 다른 클라이언트가 해당 행을 선택할 수있는 가능성이 있기 때문에 두 개의 쿼리를 사용하고 싶지 않습니다 (다른 네트워크에서 여러 컴퓨터가 동시에 연결될 것입니다).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 = ((time from YourTable order에서 ID를 선택하십시오.) t);'를 사용할 수 있습니다. 그러나 Riedsio의 대답은 훨씬 나아 보인다. –