CASE語句能否用於JOIN條件?
嘗試根據sys.allocation_units
表中某列的值連接表時,以下程式碼會產生語法錯誤:
<code class="language-sql">SELECT * FROM sys.indexes i JOIN sys.partitions p ON i.index_id = p.index_id JOIN sys.allocation_units a ON CASE WHEN a.type IN (1, 3) THEN a.container_id = p.hobt_id WHEN a.type IN (2) THEN a.container_id = p.partition_id END </code>
錯誤原因解釋:
CASE表達式傳回單一值,而不是一個等式表達式。在本例中,需要將CASE表達式的結果與常數(例如1)進行比較,以確定條件是否為真。
修正後的程式碼:
<code class="language-sql">SELECT * FROM sys.indexes i JOIN sys.partitions p ON i.index_id = p.index_id JOIN sys.allocation_units a ON CASE WHEN a.type IN (1, 3) AND a.container_id = p.hobt_id THEN 1 WHEN a.type IN (2) AND a.container_id = p.partition_id THEN 1 ELSE 0 END = 1</code>
此程式碼將CASE表達式的結果與1進行比較,回傳條件為真的行。
以上是可以在 JOIN 條件中使用 CASE 語句嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!