首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

全文索引模糊查询+分页存储过程 有关问题

2012-12-16 
全文索引模糊查询+分页存储过程 问题。本来在做一个分页的存储。但是我这个查询比较复杂。套用不了一般分页过

全文索引模糊查询+分页存储过程 问题。
     本来在做一个分页的存储。但是我这个查询比较复杂。套用不了一般分页过程

  我的查询语句是:
    select top 5 * from SStand where SStandID not in(select top 3 SStandID from SStand
inner join containstable(SStand,([SStandFRContent],[SStandGRContent]),'安全',50) as k
on SStandID=k.[key]
where SStandTypeID=CONVERT(nvarchar,7)
order by SStandID asc)
  此语句没有语法错误,解释一下
select top 3 SStandID from SStand
inner join containstable(SStand,([SStandFRContent],[SStandGRContent]),'安全',50) as k
on SStandID=k.[key]
where SStandTypeID=CONVERT(nvarchar,7)
order by SStandID asc
 这个查询语句的结果假设为
 id name .....
   1  a
   3  c
   4  d

假如总的查询是:
  id name .....
   1  a
   3  c
   4  d
   5  e
   6  f
   7  g
   8  h
   9  j

 想要得到的结果是:
id name .....
   5  e
   6  f
   7  g
   8  h
   9  j

但是查询总的语句时出现的结果却是
 id  name...
  2    n
  5    e
  6    f
  7    g
  8    h

原因分析:  我这个语句是对的。但就是筛选缺少条件,缺少一个

select * SStandID from SStand
inner join containstable(SStand,([SStandFRContent],[SStandGRContent]),'安全',50) as k
on SStandID=k.[key]
where SStandTypeID=CONVERT(nvarchar,7)
order by SStandID asc
的条件。 not in里面是有一个这样的查询句子,但那个句子只筛选出来了你不要的数据,并没有筛选出来你所要的数据
差上面的那个查询语句,可是我不知道这个语句要放到哪里。 
  
   求解。。。。。

  给个对照:
select top 5 * from SStand where SStandID not in(select top 3 SStandID from SStand where contains(SStandFRContent,'安全')order by SStandID) and Contains(SStandFRContent,'安全')
我缺少的就是这个红色类似的查询语句
[最优解释]

;with cte as (
 select top 8 SStand.*,row_number() over(order by  SStandID asc) as num from SStand
 inner join containstable(SStand,([SStandFRContent],[SStandGRContent]),'安全',50) as k
 on SStandID=k.[key]
 where SStandTypeID=CONVERT(nvarchar,7)
 order by SStandID asc
)
select  * from cte
where num >3

[其他解释]

charindex('安全',SStandFRContent)>0

[其他解释]
嵌套后加个where条件?用like不行吗?
[其他解释]
引用:
SQL code

charindex('安全',SStandFRContent)>0


我的东西都是用我上面的方法做的。 改起来很麻烦。 charindex(....) 这个方法比较古老  我用过。 但不适用我这个



 谢谢你。
[其他解释]

引用:
嵌套后加个where条件?用like不行吗?


我的数据很多呢。  like能不用尽量不用。
  这个问题简单一点的理解就是
  我希望在查询的一个结果集中 再对结果集进行查询。
[其他解释]
你的逻辑有问题
top 3有安全条件
top 5 没有安全条件


[其他解释]
引用:
引用:
嵌套后加个where条件?用like不行吗?


我的数据很多呢。 like能不用尽量不用。
  这个问题简单一点的理解就是
  我希望在查询的一个结果集中 再对结果集进行查询。

cte是为这个逻辑设置的
[其他解释]
引用:
你的逻辑有问题
top 3有安全条件
top 5 没有安全条件


  没错,没错。  我就是在想。 子查询或者上面的 可不可以带上安全条件。。
[其他解释]
引用:
引用:
引用:
嵌套后加个where条件?用like不行吗?


我的数据很多呢。 like能不用尽量不用。
这个问题简单一点的理解就是
我希望在查询的一个结果集中 再对结果集进行查询。

cte是为这个逻辑设置的


可以给点注释吗?  这个有点不懂。。。
[其他解释]
引用:
引用:
嵌套后加个where条件?用like不行吗?


我的数据很多呢。 like能不用尽量不用。
  这个问题简单一点的理解就是
  我希望在查询的一个结果集中 再对结果集进行查询。


可以放入临时表 可以用 CTE
[其他解释]
引用:
引用:
引用:
嵌套后加个where条件?用like不行吗?


我的数据很多呢。 like能不用尽量不用。
这个问题简单一点的理解就是
我希望在查询的一个结果集中 再对结果集进行查询。


可以放入临时表 可以用 CTE


  放入临时表。假如有两个人同时查询。 有假如两个人都用到了临时表,里面的数据会不会被后面一个人的查询结果覆盖?
[其他解释]
引用:
引用:
引用:
引用:
嵌套后加个where条件?用like不行吗?


我的数据很多呢。 like能不用尽量不用。
这个问题简单一点的理解就是
我希望在查询的一个结果集中 再对结果集进行查询。


可以放入临时表 可以用 CTE


  放入临时表。……


应该不会 在一个事务中先不要DROP掉 

实在害怕的话可以考虑用全局临时表

热点排行