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

Cơ sở dữ liệu chuẩn hóa - MỘT đến NHIỀU - Tìm kiếm qua tất cả các tập dữ liệu đã kết hợp

Đây là một cách để làm điều đó:

    SELECT DISTINCT song.song_id, song.title
    FROM song
    INNER JOIN (SELECT songid FROM song_genre WHERE song_genre.genre_id ='1') genre1 
         ON genre1.song_id = song.song_id
    INNER JOIN (SELECT songid FROM song_genre WHERE song_genre.genre_id ='2') genre2 
         ON genre2.song_id = song.song_id

Một cách khác có thể hiệu quả hơn. Điều này giả định rằng không có lỗi nào trong song_genre. COUNT (*) =X trong đó X bằng số thể loại được liệt kê.

SELECT DISTINCT song.song_id, song.title
FROM song
INNER JOIN (SELECT songid, COUNT(*) FROM song_genre 
WHERE genre_id IN ('1','2') 
GROUP BY songid HAVING COUNT(*) = 2) genre1 ON genre1.song_id = song.song_id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chèn nhiều hàng bằng cách sử dụng một giá trị forigenk trong biểu mẫu

  2. Tìm tất cả các cột số nguyên đang đạt đến giới hạn của nó bằng cách sử dụng information_schema

  3. Cách lấy mô hình ER của cơ sở dữ liệu từ máy chủ với Workbench

  4. MySql - tự động hoàn thành

  5. Làm cách nào để nhập tệp .dmp (Oracle) vào MySql DB?