ホームページ > データベース > mysql チュートリアル > JOIN 条件で CASE ステートメントを使用できますか?

JOIN 条件で CASE ステートメントを使用できますか?

Mary-Kate Olsen
リリース: 2025-01-20 07:31:09
オリジナル
279 人が閲覧しました

Can I Use a CASE Statement in a JOIN Condition?

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 など) と比較して、条件が true かどうかを判断する必要があります。

修正コード:

<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 である行を返します。

以上がJOIN 条件で CASE ステートメントを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート