这个功能能不能用一条SQL语句搞定?(在线等,超急!)

时间:2022-12-09 19:08:24
有一帖子表,结构如下

ID  标志  是否主题   作者    内容
1   A      1        张三   ....  
2   A      0        李四   ....  
3   A      0        文五   ....  
4   A      0        文五   ....
5   B      1        xxxx   ....
        ..............

我是这样设计的,“标志”值相同的记录就是某主题及其跟帖。“是否主题”值是1表示是主题,0则为跟贴。

我现在要做一个搜索功能。搜索某人参与的主题(发了跟贴)。  比如搜索:文五。 那么得到ID为1的那条主题记录,且仅仅一条。当搜索: 张三,则没有记录,因为他发的只有主题,没有跟贴。

不知道一条sql语句是否能搞定!!谢谢!!等待中。。。

我的数据库是mysql.不过改版好象很久都没人知道。我觉得这个版面高手多,特也来此问问。用sql server的SQL也行。应该差不多。

11 个解决方案

#1


select * from 帖子表 where 是否主题=1 and 标志 in(select 标志 from 帖子表 where 作者='文五')

#2


TRY:
select * from table AA where 是否主题=1 and 标志 in (select 标志 from table where 是否主题=1 and 作者='文五')

#3


TRY:更正
select * from table AA where 是否主题=1 and 标志 in (select 标志 from table where 是否主题=0 and 作者='文五')

#4


上面的语句在mysql不能用,用这个:

select * from table AA ,table BB where aa.标志=bb.标志 and aa.是否主题=1 and bb.是否主题=0 and bb.作者='文五'

#5


谢谢大家,Mysql居然不支持子查询。。。郁闷!!

#6


CrazyFor(蚂蚁) 兄。 BB 是怎么来的?

#7


自己和自己的连接查询啊,mysql应该支持的吧。

#8


55。其实我这是简化了的。实际是:

select tb_forum_post.flag,tb_forum_post.title,tb_forum_post.time,tb_regist.nickname,tb_forum_post.post_count,tb_forum_post.click,tb_forum_post.up,tb_forum_post.area_id from tb_forum_post,tb_regist where tb_forum_post.author=tb_regist.username and topic=1 and flag in (select flag from tb_forum_post where author like '%webmaster%' and topic=0 ) 

这条语句在mysql里搞不定。。如果现在再来一个BB应该加哪呢?因为已经有两个表了 。

#9


可以用 left join实现吗?

#10


我上面的和 inner join是一样效果的,
不能用left join ,这样返回的记录太多了。

#11


CrazyFor(蚂蚁) 兄。

问题是:已经有
select AA.x, BB.y from AA,BB where AA.h = BB.i 了。那在哪加自己和自己的连接表CC呢?

#1


select * from 帖子表 where 是否主题=1 and 标志 in(select 标志 from 帖子表 where 作者='文五')

#2


TRY:
select * from table AA where 是否主题=1 and 标志 in (select 标志 from table where 是否主题=1 and 作者='文五')

#3


TRY:更正
select * from table AA where 是否主题=1 and 标志 in (select 标志 from table where 是否主题=0 and 作者='文五')

#4


上面的语句在mysql不能用,用这个:

select * from table AA ,table BB where aa.标志=bb.标志 and aa.是否主题=1 and bb.是否主题=0 and bb.作者='文五'

#5


谢谢大家,Mysql居然不支持子查询。。。郁闷!!

#6


CrazyFor(蚂蚁) 兄。 BB 是怎么来的?

#7


自己和自己的连接查询啊,mysql应该支持的吧。

#8


55。其实我这是简化了的。实际是:

select tb_forum_post.flag,tb_forum_post.title,tb_forum_post.time,tb_regist.nickname,tb_forum_post.post_count,tb_forum_post.click,tb_forum_post.up,tb_forum_post.area_id from tb_forum_post,tb_regist where tb_forum_post.author=tb_regist.username and topic=1 and flag in (select flag from tb_forum_post where author like '%webmaster%' and topic=0 ) 

这条语句在mysql里搞不定。。如果现在再来一个BB应该加哪呢?因为已经有两个表了 。

#9


可以用 left join实现吗?

#10


我上面的和 inner join是一样效果的,
不能用left join ,这样返回的记录太多了。

#11


CrazyFor(蚂蚁) 兄。

问题是:已经有
select AA.x, BB.y from AA,BB where AA.h = BB.i 了。那在哪加自己和自己的连接表CC呢?