注意是要一定时间内帖子置顶
我原先的思路是这样的:
"SELECT * FROM `table` WHERE pub_time > ".time()." ORDER BY istop DESC,pub_time desc" 但是这样的话,当pub_time>time()时,即过期后还是按照istop排序导致过期了的置顶帖子还是排在最顶端有没有解决办法?
我原先的思路是这样的:
"SELECT * FROM `table` WHERE pub_time > ".time()." ORDER BY istop DESC,pub_time desc" 但是这样的话,当pub_time>time()时,即过期后还是按照istop排序导致过期了的置顶帖子还是排在最顶端有没有解决办法?
這句如果過期了就查不出要置頂的了,有何問題呢
"SELECT * FROM `table` WHERE pub_time > ".time()."and type=1 ORDER BY istop DESC,pub_time desc"LZ的置顶属性如果是其他表里的话那就得用嵌套查询了。
支持4楼
先查出置顶并且没过期的帖子,再查出没有置顶和已经过期的置顶帖子。
语句大概是这样:select * from 'table' where istop>0 and pubtime>time() order by istop desc,pubtime desc
union all
select * from 'table' where istop<0 order by pubtime desc
不知道你的置顶帖子和不置顶的帖子是怎么区分的?istop>0或者istop<0是区分是否置顶帖子。
istop<0表示不置顶
pubtime > time()表示已过期置顶,(注意是置顶的属性已过期,但仍需要在列表中显示出来,只是不排在最顶端)
SELECT *
FROM `table`
WHERE pub_time < ".time()."
ORDER BY istop DESC, pub_time DESC
SELECT * FROM `table` ORDER BY pub_time desc,istop DESC;
Update table set pub_time = NULL where UNIX_TIMESTAMP() > pub_time;
SELECT * FROM `table` ORDER BY pub_time desc,istop DESC;