Php 如何在mysql中获得有序结果
我有一个名为library的数据库。 有作者,有书,有书,有流派,有流派,有历史 我有5本以上以“恐怖”命名的书,3本以“喜剧”命名的书,2本以“浪漫”命名的书Php 如何在mysql中获得有序结果,php,mysql,Php,Mysql,我有一个名为library的数据库。 有作者,有书,有书,有流派,有流派,有历史 我有5本以上以“恐怖”命名的书,3本以“喜剧”命名的书,2本以“浪漫”命名的书 我有一个复选框,上面有我所有的类型,当我选择它们时,我希望结果按类型分组,大多数记录在顶部。 下面是一些代码: "SELECT title, price, genre_id, name FROM books INNER JOIN books_genres ON books.id = books_genres.book_id INNER
我有一个复选框,上面有我所有的类型,当我选择它们时,我希望结果按类型分组,大多数记录在顶部。 下面是一些代码:
"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})";
这把所有的书还给我,但没有我想要的订单
ID是带有类型ID的字符串,如1,2,3,4,用于:
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;"
使用子查询和ORDERBY子句 例如:
"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"
请参见此处的答案:如果希望顺序是升序而不是降序,则通过此选项我可以得到结果,但不是按所需顺序替换
id
为要按顺序排序的列的名称和DESC
byASC
。你想要的顺序是什么?我希望结果按流派分组,大多数记录都在最上面。所以id或类型id不起作用。您必须更改您的查询,一秒钟后在答案中添加查询。试试看。#1054-where子句中的未知列“bks.genre_id”
"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"