为什么我的SQL语句在使用IF时错了?DECLARE @ii int
set @ii=3SELECT TOP 3
b.ID
FROM dbo.WebSite_msii_Menu_Master a 
INNER JOIN dbo.WebSite_msii_info b 
ON a.ID = b.CateID 
WHERE b.flagD = 0 
AND a.CateNameCn LIKE '正则表达式'
AND b.ID =
(
IF(SELECT @@RowCount) > 0 AND (SELECT @@RowCount) < @ii
SELECT TOP 1 ID from WEBSITE_MSII_INFO ORDER BY ID ASC
ELSE
SELECT TOP 1 ID from WEBSITE_MSII_INFO ORDER BY ID DESC
)SELECT TOP 3
b.ID
FROM dbo.WebSite_msii_Menu_Master a 
INNER JOIN dbo.WebSite_msii_info b 
ON a.ID = b.CateID 
WHERE b.flagD = 0 
AND a.CateNameCn LIKE '正则表达式'
AND b.ID IN
(
IF(SELECT @@RowCount) > 0 AND (SELECT @@RowCount) < @ii
SELECT TOP 2 ID from WEBSITE_MSII_INFO ORDER BY ID ASC
ELSE
SELECT TOP 3 ID from WEBSITE_MSII_INFO ORDER BY ID DESC
)
错误提示如下:服务器: 消息 156,级别 15,状态 1,行 12
在关键字 'IF' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 16
第 16 行: ')' 附近有语法错误。

解决方案 »

  1.   

    IF(SELECT @@RowCount) > 0 AND (SELECT @@RowCount) < @ii
    SELECT TOP 1 ID from WEBSITE_MSII_INFO ORDER BY ID ASC
    ELSE
    SELECT TOP 1 ID from WEBSITE_MSII_INFO ORDER BY ID DESC
    不能潜入select语句
      

  2.   

    可以在存储过程的开始把下面的代码先计算出临时的value然后再处理
      

  3.   

    IF ((SELECT @@RowCount) > 0 AND (SELECT @@RowCount) < @ii)
    BEGIN
        ...
    END
      

  4.   

    IF(SELECT @@RowCount) > 0 AND (SELECT @@RowCount) < @ii
    BEGIN
    SELECT TOP 1 ID from WEBSITE_MSII_INFO ORDER BY ID ASC
    END
    ELSE
    BEGIN
    SELECT TOP 1 ID from WEBSITE_MSII_INFO ORDER BY ID DESC
    END
    错误依然存在。