sql >> データベース >  >> RDS >> Sqlserver

CASE 値に基づいて異なるテーブルから選択する TSQL

    IF の使用 (正しい方法)

    IF @Var = 'AA'
    BEGIN
        SELECT ID FROM Table1
        -- WHERE ...
    END
    ELSE IF @Var = 'BB'
    BEGIN
        SELECT ID FROM Table2 
        -- WHERE ...
    END
    ELSE
    BEGIN
        SELECT ID FROM Table3  
        -- WHERE ...
    END
    

    他の方法 (避けるべきですが、参考のために投稿します)

    動的 SQL の使用

    DECLARE @sql NVARCHAR(MAX)
    SELECT @sql = 'SELECT ID FROM ' + CASE @Var WHEN 'AA' THEN 'Table1' 
                                                WHEN 'BB' THEN 'Table2' ELSE 'Table3' END + ' -- WHERE ...'
    EXEC(@sql)
    

    UNION の使用

    SELECT Id
    FROM Table1
    WHERE @Var='AA'
    -- AND ...
    
    UNION ALL
    
    SELECT Id
    FROM Table2
    WHERE @Var='BB'
    -- AND ...
    
    UNION ALL
    
    SELECT Id
    FROM Table3
    WHERE @Var NOT IN('AA', 'BB')
    -- AND ...
    


    1. pgBouncerはDjangoのスピードアップにどのように役立ちますか

    2. SQLServerデータベーススナップショット-4

    3. sqlplusスクリプトのコンパイルエラーで停止します

    4. プラグインモデルのCakePHP3defaultConnectionNameが機能しない