首頁 > 資料庫 > mysql教程 > 如何在SQL Server中使用CASE語句正確連接表?

如何在SQL Server中使用CASE語句正確連接表?

Barbara Streisand
發布: 2025-01-20 07:21:14
原創
516 人瀏覽過

How to Correctly Join Tables in SQL Server Using a CASE Statement?

在SQL Server中使用CASE語句正確連接表的技巧:語法錯誤修正

在SQL Server中,基於CASE條件連線表可能會遇到挑戰。本文探討一個嘗試使用CASE語句連接sys.partitionssys.allocation_units表的查詢,以及如何解決其語法錯誤。

語法錯誤源自於在CASE條件中使用了"="。 CASE表達式從THEN子句傳回一個值,而不是布林結果。

修正後的語法

以下修正後的語法解決了語法錯誤:

<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(True),否則傳回0(False)。
  • 然後,使用等號(=)將CASE表達式的結果與1進行比較。如果選擇的條件為True,則傳回1;否則回傳0。
  • 只有CASE表達式計算結果為True的行才會包含在連接結果中。

This revised response maintains the original language, image format, and image position while rewording the text for a slightly different presentation. The core meaning and technical details remain unchanged.

以上是如何在SQL Server中使用CASE語句正確連接表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板