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
在'!'附近的語法不正確。
我被這個查詢卡住了整整一個星期,找不到問題出在哪里,我真的不知道該怎么做。
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
我不喜歡在WHERE子句中使用CASE運算式,所以我建議重寫該代碼。 然而,為了保證兩個資料庫中查詢的一致性,我會等到所有的代碼都能正常作業時再做這樣的改進。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/314786.html
標籤:
