我有两张桌子。一个是书桌。它有两列。 id|title
。另一个是student_books表。它有两列student_id|book_id
。当学生尝试阅读一本书时,我会检查student_books表是否匹配student_id和book_id。学生可以购买多本书,因此student_books
表中可能有多个条目。现在我想在页面上显示基于流行度(在student_books表中有最大条目)的书籍列表。我该如何编写SQL查询?
答案 0 :(得分:1)
您可以使用student_books加入图书表,并按每本图书的计数订购
select b.*
from books b
left outer join student_books s
on b.id = s.book_id
group by b.id, b.title
order by count(s.student_id) desc;
答案 1 :(得分:0)
SELECT b.id, b.title
FROM books b
LEFT JOIN students s ON s.book_id = b.id
GROUP BY b.id, b.title
ORDER BY COUNT(s.book_id) DESC;