hur.cn - 华软网

 热门搜索

求SQL语句,肯请各位看官挺力相助:)

  作者:未知    来源:网络    更新时间:2018/5/16
新闻数据表(News),其范例结构与数据为:

记录ID  新闻标题  新闻关键字  新闻内容
1       新闻1     A,B         新闻内容1
2       新闻2     B,C         新闻内容2
3       新闻3     C,D         新闻内容3

此时有一则新闻内容为“AD”,列出与其相关的其它新闻记录(即查询该新闻内容中含有与之对应的“新闻关键字”的记录,注:“新闻关键字”中的数据是组合项,应分离后再进行判断)

故 记录ID为1 的 新闻关键字为:A,C(A与B)  ,其中A在新闻内容"AD"中,则该条数据为符合查询关键字数据

记录ID为2 的 新闻关键字为 B,C(B与C) ,应B与C均不在新闻内容“AD”中,则该条数据不符合查询关键字数据

以此类推,故用某条SQL语句列出结果记录应为:

记录ID  新闻标题  新闻关键字  新闻内容

1       新闻1     A,B         新闻内容1
3       新闻3     C,D         新闻内容3

求该条SQL语句!在线等待!谢谢!如解决,定重分酬谢!


------华软网友回答------
单个的sql语句不是很好解决,而且写出的东西不灵活,用存储过程要好很多

------华软网友回复------
select * from NEWS where 新闻关键字 like '%A%' or 新闻关键字 like '%D%';
好像一句里把A D折开不太容易。
------华软网友回复------
请问:你的新闻关键字字段中以逗号分隔开了几个关键字,是确定数字吗?如果是可以这样写,以两个为例,假设新闻内容为"AD":
select * 
from News
where 'AD' LIKE '%' + LEFT( 新闻关键字,CHARINDEX(',',新闻关键字) - 1 ) +'%' OR
'AD' LIKE '%' + RIGHT ( 新闻关键字 , LEN ( 新闻关键字 ) - CHARINDEX(',',新闻关键字) ) +'%'
------华软网友回复------
1.首先提醒楼主:将关键字以“,”隔开放在一个字段里面是不明智的选择,如果可能的话在一个关联表中存储[每个关键字一条记录],这样可以大大提高效率,查找起来写SQL也简单了许多
当然最好做成这样就效率更高了:
表News:
记录ID 新闻标题 新闻内容
1 新闻1  新闻内容1
2 新闻2  新闻内容2
3 新闻3  新闻内容3
关键字表keys:
记录ID 关键字
1      A
2      B
3      C
4      D
新闻对应关键字表news2keys:
新闻ID 关键字ID
1      1
1      2
2      2
2      3
3      3
3      4


2.如果楼主非要如你的做法,需要在数据库里面专门写一个字符串分析函数,并且每次都要把很多记录做这个分析,如果机器不累死就真的奇怪了


------华软网友回复------
同意 renwanly
------华软网友回复------
同意 renwanly
既然已经有关键字,用LIKE语句就是毒害服务器。

------华软网友回复------
同意 renwanly,楼主表没设计好啊      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。