Đối với những người khác nhận thấy câu hỏi này đang tìm cách xóa trong khi sử dụng truy vấn con, tôi để lại cho bạn ví dụ này để đánh dấu ngoài MySQL (ngay cả khi một số người dường như nghĩ rằng nó không thể được thực hiện):
DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
FROM tableE
WHERE arg = 1 AND foo = 'bar');
sẽ cung cấp cho bạn một lỗi:
ERROR 1093 (HY000): You can't specify target table 'e' for update in FROM clause
Tuy nhiên, truy vấn này:
DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
FROM (SELECT id
FROM tableE
WHERE arg = 1 AND foo = 'bar') x);
sẽ hoạt động tốt:
Query OK, 1 row affected (3.91 sec)
Kết thúc truy vấn con của bạn trong một truy vấn con bổ sung (ở đây có tên là x) và MySQL sẽ vui vẻ thực hiện những gì bạn yêu cầu.