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

truy vấn SQL phức tạp, nhiều đến nhiều

Một cái gì đó như thế này.

Select people.id, people.name, count(interest.id)
from people
left join people_interests on people.id = people_interests.peopleid 
left join interests on people_interests.interestid = interests.interest.id
where interests.id in (select id from interests where interests.peopleid = @inputuserid)
group by people.id, people.name
order by count(interest.id)

Bằng tiếng Anh (có thể có hoặc có thể không làm cho nó rõ ràng hơn.)

  • Chọn tên của người đó và số lượng sở thích mà họ chia sẻ
  • Từ bảng mọi người
  • Tham gia bảng sở thích sao cho bảng đó
  • Là chỉ sở thích của người mà chúng tôi đang cố gắng đối sánh.
  • (nhóm theo người
  • và sắp xếp theo số lượng sở thích phù hợp.)

Đã cập nhật mà không có truy vấn phụ nhưng kém rõ ràng hơn

Select people.id, people.name, count(interest.id)
from people
left join people_interests on people.id = people_interests.peopleid 
left join interests on people_interests.interestid = interests.interest.id
inner join interest i2 on (interests.id = i2.id and i2.people_id = @inputuserid)
group by people.id, people.name
order by count(interest.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. cách tối ưu hóa truy vấn này (liên quan đến bảng 4 mm)

  2. Truy xuất ngày còn thiếu từ cơ sở dữ liệu thông qua MySQL

  3. Làm thế nào để thay đổi vị trí cột của bảng MySQL mà không làm mất dữ liệu cột?

  4. Làm cách nào để lấy loại câu lệnh truy vấn trong PDO?

  5. máy chủ php ERR_CONNECTION_REFUSED