Php Mysql根据需要进行非常复杂的排序/排序
我必须写一个复杂的查询 我有mysql表名广告,有1000个广告 现在我的分页显示所有广告按日期降序添加列。每页20条记录Php Mysql根据需要进行非常复杂的排序/排序,php,mysql,Php,Mysql,我必须写一个复杂的查询 我有mysql表名广告,有1000个广告 现在我的分页显示所有广告按日期降序添加列。每页20条记录 Select * from ads order by sort_order asc,date_added desc LIMIT 0,20; 新的要求是 排序顺序是根据成员类型分配的。因此,在每一页上,我需要显示20个广告总数(5个广告,从每个会员类型)。如果一个会员在任何页面上没有5条记录,下一个会员将显示前一个会员的5+缺失广告 现在我需要这样的页面顺序 Name
Select * from ads order by sort_order asc,date_added desc LIMIT 0,20;
新的要求是
排序顺序是根据成员类型分配的。因此,在每一页上,我需要显示20个广告总数(5个广告,从每个会员类型)。如果一个会员在任何页面上没有5条记录,下一个会员将显示前一个会员的5+缺失广告
现在我需要这样的页面顺序
Name date_added sort_order
ad1 12-2-2015 1 //PREMIUM MEMBER's ADS
ad2 11-2-2015 1 //PREMIUM MEMBER's ADS
ad3 10-2-2015 1 //PREMIUM MEMBER's ADS
ad4 09-2-2015 1 //PREMIUM MEMBER's ADS
ad5 08-2-2015 1 //PREMIUM MEMBER's ADS
ad6 13-2-2015 2 //GOLD MEMBER's ADS
ad7 12-2-2015 2 //GOLD MEMBER's ADS
ad8 07-2-2015 2 //GOLD MEMBER's ADS (There may be chance gold type of mebers has posted only 3 ads)
ad9 18-2-2015 3 //SILVER MEMBER's ADS
ad10 10-2-2015 3 //SILVER MEMBER's ADS
ad11 03-2-2015 3 //SILVER MEMBER's ADS
ad12 02-2-2015 3 //SILVER MEMBER's ADS
ad13 02-2-2015 3 //SILVER MEMBER's ADS
ad14 02-2-2015 3 //SILVER MEMBER's ADS
ad15 01-2-2015 3 //SILVER MEMBER's ADS
ad16 12-2-2015 4 //REGULAR MEMBER's ADS
ad17 08-2-2015 4 //REGULAR MEMBER's ADS
ad18 03-2-2015 4 //REGULAR MEMBER's ADS
ad19 02-2-2015 4 //REGULAR MEMBER's ADS
ad20 01-2-2015 4 //REGULAR MEMBER's ADS
意味着如果不存在具有特定排序顺序的中间行,则下一个顺序应显示更多记录。如上例所示,sort_order=2在表中有3条记录,所以sort_order=3应该显示7。5+2=7
对于特定的排序顺序,还需要保留降序中添加的按日期排序的顺序
这可以通过一个mysql查询来完成,这样我的分页就不会停止工作
或者其他任何方式
我试过所有的方法,但这对丢失的记录不起作用
谢谢你的帮助。因为我在过去的两天里一直在尝试。现在我决定在这里提问。您能解释一下逻辑位吗?sort\u order=2在表中有3条记录,所以sort\u order=3应该显示5+2=7是。这意味着表中可能只存在3个排序顺序为2的广告。因此,下一个排序顺序=3应该显示7。由于每页记录应保持20,以便正确分页。请解释逻辑。不是应该显示7的东西。你从哪里得到5和2?你的问题很难理解-请向我们展示你的sql语句。我建议你运行四个查询,每个成员类型一个,并在应用程序端进行处理。在数据库中似乎有太多的边缘案例来处理这个问题——如果类别4的记录最少会发生什么?如果你进入一个只有3类记录的页面会怎么样?等等