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

MySQL DELETE FROM với truy vấn con UNION theo điều kiện IN

Hãy thử phiên bản này để thay thế:

DELETE FROM startpoint
    WHERE id IN (select *
                 from ((SELECT id FROM stairs WHERE building = 123)
                       UNION
                      (SELECT id FROM lift WHERE building = 123)
                       UNION
                      (SELECT id FROM qrcodeid WHERE building = 123)
                )

Tôi nghĩ rằng vấn đề là một vấn đề phức tạp với định nghĩa của một truy vấn con. Truy vấn con là select câu lệnh, trong khi một union là sự kết hợp của select tuyên bố.

CHỈNH SỬA:

Trên thực tế, nếu bạn muốn hiệu quả, bạn sẽ không sử dụng cách tiếp cận này. Tôi chỉ đang cố gắng chỉ cách sửa lỗi. Một giải pháp tốt hơn sẽ là:

DELETE sp FROM startpoint sp
    WHERE EXISTS (select 1 from stairs s where s.building = 123 and s.id = sp.id) or
          EXISTS (select 1 from lift l where l.building = 123 and l.id = sp.id) or
          EXISTS (select 1 from qrcodeid q where q.building = 123 and q.id = sp.id);

Các chỉ mục được đề xuất trên stairs(id, building) , lift(id, building)qrcodeid(id, building) .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thiết lập múi giờ xampp mysql và apache?

  2. MySQL:trả về các hàng đã cập nhật

  3. Tìm kiếm FULLTEXT trong MySQL không trả về bất kỳ hàng nào

  4. Cách tự động để chuyển đổi tệp XML sang cơ sở dữ liệu SQL?

  5. Làm cách nào để tạo một nhóm liền kề trong MySQL?