SELECT COUNT(*) AS numrows
FROM "tbltasks"
WHERE "status" = 1
AND CASE WHEN rel_type='project'
AND rel_id IN (SELECT project_id
FROM tblproject_settings
WHERE project_id = rel_id
AND "name" = 'hide_tasks_on_main_tasks_table'
AND value=1)
THEN rel_type != 'project'
ELSE 1 = 1 END
我正在處理一個現有專案,我正在將查詢從 MySQL 轉換為 MsSQL,當我執行這個查詢時它給出:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '!'.
我被這個查詢卡了整整一周,找不到問題出在哪里,我真的不知道該怎么辦。
uj5u.com熱心網友回復:
首先,修復可能不需要的參考。其次,問題可能是CASE/THEN. 您可以改為使用:
SELECT COUNT(*) AS numrows
FROM tbltasks
WHERE status = 1 AND
(CASE WHEN rel_type = 'project' AND
rel_id IN (SELECT project_id
FROM tblproject_settings
WHERE project_id = rel_id AND
name = 'hide_tasks_on_main_tasks_table' AND
value = 1
)
THEN 0 ELSE 1
END) = 1
我不喜歡CASE在子句中使用運算式WHERE,所以我建議重寫該代碼。但是,為了兩個資料庫中的查詢之間的一致性,我會等到所有代碼都正常作業后再進行此類改進。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/415084.html
標籤:
上一篇:連接兩個SQL表,其中表1中的外部ID在表2中出現兩次
下一篇:根據SQL中的條件創建另一列
