SELECT TOP (@NoofQuetion)
*
FROM
tblQuestion qs
WHERE
qs.IsActive = 1
AND qs.IsDeleted = 0
OR (qs.CategoryID IS NULL AND qs.CategoryID = @CategoryId)
ORDER BY
NEWID()
在此查詢中,@NoofQuestion是限制應用記錄。我想categoryId IS NULL在 where 條件下記錄所有型別的categoryId. 當@CategoryId作為引數傳遞時,只回傳匹配的行categoryId。
例如我通過@CategoryId = 2,我只得到記錄在哪里
ISACTIVE = 1 AND ISDELETED = 0 AND CategoryID = 2
當我通過NULLas 時@CategoryId,然后回傳所有行
ISACTIVE = 1 AND ISDELETED = 0
給我解決方案。
uj5u.com熱心網友回復:
你交換了OR和AND。你的WHERE陳述應該看起來像
qs.IsActive = 1 AND qs.IsDeleted = 0 AND (qs.CategoryID IS NULL OR qs.CategoryID = @CategoryId)
編輯:
經過一些測驗,結果表明您的WHERE條款中存在第二個問題。您正在檢查CategoryId表中的 是否為空,而不是您的@CategoryId變數是否為空。在此更改和上述更改之后,您的WHERE子句應如下所示
qs.IsActive = 1 AND qs.IsDeleted = 0 AND (@CategoryID IS NULL OR qs.CategoryID = @CategoryId)
這是我用來測驗它的 SQL Fiddle。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/367387.html
