select from tb where posttime-$timestamp<15 order by top?这种别扭的问题毫无意义。
解决方案 »
- PHP中require PK require_once, 构建自己的高效require_once(10倍的性能提升)
- 关于PHP模板标签的转换
- 我用imagettftext写黑色的字怎么会是土黄色的呢?
- 这段SQL应该怎么写啊?
- 大家给我一些使用 smarttemplate 模板类的中文资料好吗??先谢过了。
- textarea在IE问题
- 急!!100分求网站推广软件和注册码!在线等
- 在PHP里,表单里,我的爱好栏目有Sport,Dance,Killer等好几个项目,想用复选框,但是名字太多了,想用一个Favorite的数组,请问怎样写代
- 如何实现这种避免表单反复提交的方法?
- 定义了一个截取指定长度中英文字符的函数,大神们帮我看看哪里出问题了
- 高分请教!在线等!
- 求“新动力商务网新闻系统多功能修改版”的源代码
select from tb where posttime-$timestamp<15 order by top?这样出来的结果是什么?只选置顶的???不置顶的不要了???真是。。不看清就乱说!
这样子不知道能否符合你的条件。
posttime为发布时间
topflag为置顶属性字段
里面的1代表其它成立的条件
之后 SELECT * FROM {table} WHERE 条件 ORDER BY 置顶标识符
设置置顶也要数据库自动完成?如果是就太怪异了。
查询语句
select * from tbl_name where adddate(top,interval 15 day)>=now()
union
select * from tbl_name where adddate(top,interval 15 day)<now();
前半句提取符合置顶条件的记录,后半句提取其他的记录。用union子句连接成完整的查询结果
Union是什么意思??请问唠叨是不是PHPx中的唠叨版主? 我先试一下!
改成这样还能分级预置,例如一级预置,二级预置,三级预置代码:--------------------------------------------------------------------------------
SELECT *, IF(DATE_SUB(NOW(), INTERVAL 15 DAY)< posttime and pin>0,pin,0) as pinkey FROM posts WHERE `type`='t' ORDER BY pinkey DESC,id DESC
--------------------------------------------------------------------------------例如 pin=2 就是二级预置了
SQL数据(test数据库):代码:--------------------------------------------------------------------------------
CREATE TABLE `posts` (
`id` int(10) unsigned NOT NULL auto_increment,
`title` tinytext NOT NULL,
`posttime` datetime NOT NULL default '0000-00-00 00:00:00',
`type` char(1) NOT NULL default '',
`pin` tinyint(3) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=9 ;--
-- 导出表中的数据 `posts`
-- INSERT INTO `posts` VALUES (1, '这是第一张帖子', '2005-04-15 08:00:00', 't', 1);
INSERT INTO `posts` VALUES (2, '这是第一张帖子的回复', '2005-04-15 09:11:00', 'r', 0);
INSERT INTO `posts` VALUES (3, '这是第二个主题', '2005-04-27 00:00:00', 't', 0);
INSERT INTO `posts` VALUES (4, '第三个主题', '2005-04-11 11:00:00', 't', 0);
INSERT INTO `posts` VALUES (5, '第四个主题', '2005-04-13 11:00:00', 't', 1);
INSERT INTO `posts` VALUES (6, '第五个主题', '2005-04-16 00:00:00', 't', 0);
INSERT INTO `posts` VALUES (7, '第七个主题', '2005-03-24 00:00:00', 't', 1);
INSERT INTO `posts` VALUES (8, '第八个主题', '2005-04-29 00:00:00', 't', 0);
-------------------------------------------------------------------------------------
select from tb where to_days(posttime) > to_days(now()) - 15 or 1 order by topflag desc,posttime desc limit 20;
这样子不知道能否符合你的条件。
posttime为发布时间
topflag为置顶属性字段
里面的1代表其它成立的条件
-------------------------------------------------------------------------------------
请问
1、to_days(posttime) > to_days(now()) - 15 条件得到的是什么?是不是发布时间是不是15天之前?2、or 1 又是什么?按你的意思如果没有其它条件可以不要是不是?两个条件加OR一下是不是发布时间15天之内的记录????
什么叫毫无意义,当然是有特殊要求才这么做了!你能搞定咩?
select from tb where posttime-$timestamp<15 order by top?这样出来的结果是什么?只选置顶的???不置顶的不要了???真是。。不看清就乱说!
-------------------
我不懂。我不说了,ok?
回复人: ashchen(陈辉) ( ) 信誉:120 2005-04-15 15:52:00 得分: 0
别让数据库变成了计算器
-----------------------
同意。
ps:说话不要那么冲。别人帮你不是义务。
有置顶标记的加上15天的描述!!然后在ORDER BY这个值!
经鉴定楼主是猪,这个问题一楼其实已经解决了还讨论到现在,纯粹找骂
以上方法觉得都不好(别打我:))
唠叨老大的我不知道好不好,感觉把时间那里adddate(top,interval 15 day)>=now()改成型如
top 〉= (now + 15 day)就最好了:)
其他的感觉都有可能造成遍历表。
orderby 后边跟 时间差排序最不赞成,order里的咚咚不要没有索引的,(尽量,呵呵,有的时候也是没有办法的。)
if哪个就看不清楚了,不过感觉效率好不到哪里去
赫赫,对于这个问题union可以胜任,但是如果太勉强的还是建议不要这样做,数据量大了以后就成垃圾了,宁可改php部分了:)