Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL DELETE FROM với truy vấn con là điều kiện

Đố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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm kiếm đối sánh toàn bộ từ trong MySQL

  2. Cài đặt Máy chủ Web trong Windows XP với Apache2, PHP5 và MySQL4 - Phần 1

  3. Giới thiệu về các lệnh SQL

  4. MySQL DROP COLUMN

  5. Cách kiểm tra kích thước cơ sở dữ liệu MySQL trong Linux