我是想这样做 查询两次 来获得我需要的数据首先 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,有没有办法把 第一句和第二句合成一句? (就是查 not like 这两句)
2,请问这样的SQL该怎么写?
begin
SELECT Top 10 .... Msg Not like ...
endelsebegin
SELECT Top 10 ....Msg like ...
end
如果没有的话直接
select 语句就行啦
SET @c = SELECT COUNT(1) .... Msg not like ...
if @c >5
beginend
else
if @c >6
beginend
建议申明个变量
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
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
begin
select top 10 ...msg not like ....
end
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
else
if(select count(1) ....msg not like ...)<5
begin
select top 10....msg not like....
end
因为lz只说>5和<5,而其他同学都直接ifelse了,包括了=5的情况:)
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
优化器会自己处理 虽然count了两次 但是效率是一样的
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