1

我在 SQL 中使用 IF ELSE 语句时遇到一种情况。

    @searchString nvarchar(50),
    @languageId int, 
    @count int,
    @id int
IF(@count IS NOT NULL)
    SELECT TOP (@count) Id, value
    FROM TABLE1
        WHERE  (Id IN
        (SELECT Id
    FROM      TABLE2
    WHERE   (Id = @id))) and languageId = @languageId AND value LIKE '%' + @searchString + '%'
ORDER BY value

ELSE
    SELECT Id, value
    FROM TABLE1
        WHERE  (Id IN
        (SELECT Id
        FROM      TABLE2
    WHERE   (Id = @id))) and languageId = @languageId AND value LIKE '%' + @searchString + '%'
ORDER BY value

我想使用 count(*) over() (或类似的东西)返回所有行的数量(因为我现在只返回 TOP 计数记录),就像这里回答的那样: 如何返回带有 TOP * 的记录总数选择

但是:我不会为每个实例返回这个值,但我想只返回一次计数。

有没有办法用一个查询来做到这一点,或者我必须为此编写一个单独的查询?

任何提示将不胜感激!

编辑:使用 SQL Server 2008 r2。

4

1 回答 1

0

我建议您使用 INNER JOIN,例如带有脚本的示例:{ SCRIPT

选择

                l.localite_id,
                p.patient_id,
                p.patient_date_naissance, 
                p.patient_gsm, p.patient_tel

FROM 患者 p INNER JOIN localite l ON l.localite_id = p.localite_id INNER JOIN ville v ON v.ville_id = l.ville_id INNER JOIN gouvernorat g ON v.gouv_id = g.gouv_id INNER JOIN pays ON pays.pays_id = g。 pays_id

IF NEQ #patient_gsm# -1 WHERE p.patient_gsm like #patient_gsm#

和 p.patient_code 像 #patient_code#

万一

结尾

}

于 2012-11-26T08:53:31.777 回答