mysql查询PHP:我想先对一个特定的项目进行排序,然后对其余的项目进行排序

mysql查询PHP:我想先对一个特定的项目进行排序,然后对其余的项目进行排序,php,mysql,Php,Mysql,我有下表 id | car_name | owner ------------------------- 1 | Toyota | Jan 2 | Ford | Mike 3 | Isuzu | Andrew 4 | BMW | Jan 5 | Ferrari | Steve 6 | Audi | Jan 7 | Benz | Klark 8 | Hyundai | Jan 9 | Kia | Jan

我有下表

id  | car_name | owner
-------------------------
1   | Toyota   | Jan
2   | Ford     | Mike
3   | Isuzu    | Andrew
4   | BMW      | Jan
5   | Ferrari  | Steve
6   | Audi     | Jan
7   | Benz     | Klark
8   | Hyundai  | Jan
9   | Kia      | Jan
我想得到所有的车主,但是简有5辆车。我想让简的前四项出现在名单上。我不在乎我收到其余物品的订单。像这样

id  | car_name | owner
-------------------------
1   | Toyota   | Jan
4   | BMW      | Jan
7   | Benz     | Jan
8   | Hyundai  | Jan
2   | Ford     | Mike
3   | Isuzu    | Andrew
5   | Ferrari  | Steve
6   | Audi     | Bob
9   | Kia      | Jan

我该怎么做?谢谢

您可以通过以下任一方式订购

order by owner <> 'Jan'
order by owner = 'Jan' desc
order by case when owner = 'Jan' then 0 else 1 end
order by if(owner = 'Jan',0,1)
仅当Jan有4行或更多行时有效

试试这个

SELECT * FROM cars where id not in (select id from cars where owner='Jan' and id = 9) order by owner = 'Jan' desc;

orderbyowner='Jan'
您需要添加计数并按该计数排序。就像目前的情况一样,简有4个,但在未来,如果迈克有5个,那么迈克应该在首位。所以你需要数一数thing@Naveed为什么?根据给定的数据,作者希望他的结果按记录数排序,如Jan有4条记录,因此排序后的4条应位于顶部。所以在查询中,我们必须得到每个所有者的计数,然后按该所有者排序。我错了吗?是的,先生,但我想继续的是,如果Jan有5辆车,那么如果我想得到前4辆车,我可以修改查询……如果Jan有3辆车,那么我可以修改并得到前3辆车……如果Jan有10辆车,我想得到前2辆车。我可以修改查询。我不在乎我收到剩余物品的订单。谢谢你,先生。。按照车主的顺序,这可以正常工作='Jan'desc.。如果Jan有5辆车,那么我只想先显示Jan的4辆车,怎么做?如果先显示5辆Jan车,那么也会先显示4辆Jan车。第五个是什么并不重要,对吗?就像前4辆车是Jan然后第5辆车是Mike然后第6辆车是Andrew…第7辆是Steve…第8辆是Bob…第9辆是Jansir这很好…谢谢…但我不想继续Jan的第5辆车…如果Jan有3辆车,那么我可以修改先生并得到前3辆车…如果Jan有10辆车,我想要得到前2辆车…我不在乎我收到剩余物品的订单…谢谢你,先生。。按照车主的顺序,这可以正常工作='Jan'desc.。如果Jan有5辆车,那么我只想先展示Jan的4辆车,我该怎么做?
SELECT * FROM `table_name` order by owner = 'Jan' DESC 
SELECT * FROM cars where id not in (select id from cars where owner='Jan' and id = 9) order by owner = 'Jan' desc;