我是想这样做 查询两次 来获得我需要的数据首先 SELECT COUNT(1) .... Msg not like ...判断 count 是否> 5 如果>5  输出结果 SELECT Top 10 .... Msg Not like ...如果<5输出结果 SELECT Top 10 ....Msg like ...
1,有没有办法把 第一句和第二句合成一句? (就是查 not like 这两句)
2,请问这样的SQL该怎么写?

解决方案 »

  1.   

    if ((SELECT COUNT(1) .... Msg not like ...)>5)
    begin
    SELECT Top 10 .... Msg Not like ...
    endelsebegin
    SELECT Top 10 ....Msg like ...
    end
      

  2.   

    忘记说了这句需要用SQL语句来写:SELECT COUNT(1) .... Msg not like ...exec("SELECT COUNT(1) .... Msg not like ...")  怎么输出count啊?
      

  3.   

    你这个是存储过程吗?里面有没有变量啊
    如果没有的话直接
    select 语句就行啦
      

  4.   

    declare @c int
    SET @c = SELECT COUNT(1) .... Msg not like ...
    if @c >5
    beginend
    else
    if @c >6
    beginend
      

  5.   

    如果是带参数的话
    建议申明个变量
    declare @result int
    set @result=(SELECT COUNT(1) .... Msg not like ...)
    if (@result>5)
     begin 
    SELECT Top 10 .... Msg Not like ... 
    end 
    else 
    begin 
    SELECT Top 10 ....Msg like ... 
    end
      

  6.   

    DECLARE @INTVALUE INT
    SET @INTVALUE=(SELECT COUNT(1) .... MSG NOT LIKE ...)
    IF (@INTVALUE>5)
    BEGIN 
    SELECT TOP 10 .... MSG NOT LIKE ... 
    END 
    ELSE 
    BEGIN 
    SELECT TOP 10 ....MSG LIKE ... 
    END
      

  7.   

    if(select count(1) ....msg not like...)>5
    begin
    select top 10 ...msg  not like ....
    end
    if(select count(1) ....msg not like ...)<5
    begin
    select top 10....msg not like....
    end
      

  8.   

    ---更正楼上语句
    if(select count(1) ....msg not like...)>5
    begin
    select top 10 ...msg  not like ....
    end
    else 
    if(select count(1) ....msg not like ...)<5
    begin
    select top 10....msg not like....
    end
      

  9.   

    看来只有11楼的“真正符合”lz的意思
    因为lz只说>5和<5,而其他同学都直接ifelse了,包括了=5的情况:)
      

  10.   

    那还不如这样,省得count两次:
    declare @cnt int
    select @cnt=count(1) ....msg not like...
    if @cnt>5
    begin
    select top 10 ...msg  not like ....
    end
    else if @cnt<5
    begin
    select top 10....msg not like....
    end
      

  11.   


    优化器会自己处理 虽然count了两次 但是效率是一样的
      

  12.   

    DECLARE @cnt int
    EXECUTE SP_EXECUTESQL N'SELECT @cnt=COUNT(1) .... Msg not like ... ',N'@cnt INT OUTPUT ',@cnt OUTPUTIF @cnt>5
      BEGIN
    SELECT TOP 10 ...msg  NOT LIKE ....
      END
    ELSE IF @cnt<5
      BEGIN
    SELECT TOP 10....msg LIKE....
      END
      

  13.   

    为什么你们都是写 else if 而不直接 else呢?