18

CASEステートメントで複数の値を選択しようとしています。できないことに気づきました

CASE 
    WHEN wall.type="bk" 
    THEN books.id1,books.id2, // and so on
END as column_1,

複数の列を処理する方法はありTHENますか、それとも単に一連のステートメントを記述する必要がありますCASE THENか?散らかっているようです

4

4 に答える 4

22

いいえ、それは単一の値です。さらに、「複数の列」を使用して、それらの複数の列に「」という名前を付けることは矛盾していますcolumn_1。:)

現在行っているように、別の列を使用して他のIDを格納し(同様のケース)、nullを使用してelse値を表すことができます。

例:

CASE 
    WHEN wall.type="bk" 
    THEN books.id1
END as column_1,
CASE 
    WHEN wall.type="bk" 
    THEN books.id2
END as column_2

詳細については、公式ドキュメントを確認してください。

于 2012-04-14T17:54:24.413 に答える
5

いいえ。CASEステートメントは単一の値しか返せないため、必要なものを達成する唯一の方法はケースを複製することです...

データベース サーバーは最適化され、同じ条件で 1 回だけチェックを実行する必要があります ...

于 2012-04-14T18:03:17.380 に答える