過濾這可能不是有效的SQL,但是這是我想要做的事:在WHERE指定不同的列組合使用情況下,通過
SELECT *
FROM tablename
WHERE
(CASE @ScoreType
WHEN 1 THEN score1
WHEN 2 THEN score2
ELSE score3 END) >= @Score
基本上,我想篩選通過WHERE
子句中的不同列取決於@ScoreType
的值。我猜猜我的方法無效嗎?如果是這樣,那麼對此有何正確的方法呢?
編輯:對不起,我不小心省略了end
,同時簡化了查詢在這裏發佈。實際查詢的確有end
。查詢本身運行良好,但結果不符合預期。事實證明這個問題是在其他地方。我懷疑WHERE
條款,因爲我從來沒有嘗試過這樣的事情,並且不確定它是否是有效的SQL。
這看起來不錯。你爲什麼認爲這行不通? –
這種方法的唯一問題是que查詢計劃。爲了優化你的查詢,你可以考慮使用IF語句 – jean
沒有'end'的情況? – xQbert