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

Cải thiện truy vấn MySQL với Truy vấn con IN

MySQL không thể chuyển đổi đầu và bảng điều khiển trong IN mệnh đề. Điều này sẽ được sửa trong 6.0 .

Hiện tại, bạn có thể viết lại nó như thế này (yêu cầu JOIN ):

SELECT  i.*
FROM    (
        SELECT  DISTINCT item_id
        FROM    item_attributes a
        WHERE   a.attribute_name = 'SomeAttribute'
                AND a.attribute_value = 'SomeValue'
        ) ai
JOIN    items i
ON      i.id = ai.item_id

Vì bạn đang sử dụng EAV mô hình mà bạn có thể muốn tạo một chỉ mục duy nhất trên (attribute_name, item_id) trong trường hợp đó, bạn có thể sử dụng một phép nối đơn giản:

SELECT  i.*
FROM    item_attributes ai
JOIN    items i
ON      i.id = ai.item_id
WHERE   a.attribute_value = 'SomeValue'
        AND a.attribute_name = 'SomeAttribute'


  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 di chuyển dữ liệu giữa 2 bảng / với các cột khác nhau trong các cơ sở dữ liệu khác nhau

  2. Nhận khoảng thời gian trong mysql

  3. Sử dụng kiểm soát phiên bản (Git) trên cơ sở dữ liệu MySQL

  4. Cách chọn từ tên bảng động

  5. Các nhà phát triển PHP có nên sử dụng các thủ tục được lưu trữ của MySQL không?