是否可以在 WHERE 條件下使用 CASE 陳述句,如下所示?
SELECT act.id_activity FROM activity act
LEFT JOIN work w ON w.id_work = act.id_work
WHERE
w.work_type=1
AND w.work_tender in (1,2)
AND act.id_activity_type IN
(CASE WHEN w.work_tender=1 THEN '2,3' WHEN w.work_tender=2 THEN '2,3,4,9' END)
它不回傳錯誤,但結果始終顯示 act.id_activity_type = 2 而不是 2,3 或 2,3,4,9
在這種情況下,一項作業(表作業)可以有許多活動(表活動)。我想顯示基于 work.work_tender 型別的活動。如果 work.work_tender=1 則需要選擇 activity.id_activity_type IN (2,3)。如果work.work_tender=2 那么需要選擇activity.id_activity_type IN (2,3,4,9)
uj5u.com熱心網友回復:
您可以嘗試通過OR&撰寫正確的邏輯AND。
SELECT act.id_activity FROM activity act
LEFT JOIN work w ON w.id_work = act.id_work
WHERE
w.work_type=1
AND (
(act.id_activity_type IN ('2','3') AND w.work_tender=1) OR
(act.id_activity_type IN ('2','3','4','9') AND w.work_tender=2)
)
uj5u.com熱心網友回復:
我認為案例用于該案例。我認為在這種情況下可以使用。也適用于 orderby 短語。
uj5u.com熱心網友回復:
也許你可以試試這個:
SELECT *
FROM activity a
JOIN work w
ON w.work_tender=
CASE WHEN a.id_activity_type IN (2,3) THEN 1
WHEN a.id_activity_type IN (2,3,4,9) THEN 2 END;
如果符合條件,我在CASE這里使用運算式來分配值匹配。因此, if將與類似地匹配 with 將與 匹配。w.work_tendera.id_activity_typea.id_activity_type IN (2,3) THEN 1w.work_tender=1a.id_activity_type IN (2,3,4,9) THEN 2w.work_tender=2
演示小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/417221.html
標籤:
下一篇:當行包含用戶時選擇所有行相關的行
