mysql:使用另一个表的数据对表行进行排序

时间:2017-01-04 03:59:42

标签: php mysql laravel eloquent

我有两张桌子。一个是书桌。它有两列。 id|title。另一个是student_books表。它有两列student_id|book_id。当学生尝试阅读一本书时,我会检查student_books表是否匹配student_id和book_id。学生可以购买多本书,因此student_books表中可能有多个条目。现在我想在页面上显示基于流行度(在student_books表中有最大条目)的书籍列表。我该如何编写SQL查询?

2 个答案:

答案 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;