如何在mysql中获得有序的结果

时间:2013-06-26 22:01:10

标签: php mysql

我有一个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

2 个答案:

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