我有一个db命名库。 有作者,书籍,书籍,流派,历史
我有5本名为“恐怖”的流派书籍,3本名为“喜剧”的流派书籍和2本名为“浪漫”的流派书籍
我有一个包含所有类型的复选框,当我选择它们时,我希望结果按类型分组,其中大多数记录都在TOP上。 这是一些代码:
"SELECT title, price, genre_id, name
FROM books
INNER JOIN books_genres ON books.id = books_genres.book_id
INNER JOIN genres ON books_genres.genre_id = genres.id
WHERE genre_id IN ({$ids})";
这回到我的所有书籍,但没有我想要的订单。
ids是带有类型id的字符串,如1,2,3,4
答案 0 :(得分:3)
使用MYSQL's ORDER BY
,如:
SELECT ... FROM .... WHERE ... ORDER BY id DESC
DESC
用于降序/ ASC
用于升序
编辑:试试这个:
"SELECT title, price, genre_id, name, (SELECT COUNT(*) FROM books_genres as b WHERE b.genre_id = genres.id) as genreCount
FROM books
INNER JOIN books_genres ON books.id = books_genres.book_id
INNER JOIN genres ON books_genres.genre_id = genres.id
WHERE genre_id IN ({$ids})
ORDER BY genreCount DESC, genres.id ASC;"
答案 1 :(得分:1)
您使用子查询和ORDER BY子句。
例如:
"SELECT title, price, genre_id, name, (SELECT count(*) FROM books AS bks WHERE bks.genre_id = books.genre_id) AS genre_count
FROM books
INNER JOIN books_genres ON books.id = books_genres.book_id
INNER JOIN genres ON books_genres.genre_id = genres.id
WHERE genre_id IN ({$ids})
ORDER BY genre_count DESC"