0

私は4つの文字を含むaccount_typeという列を持っています。d、、、、。h_ v_ aここで、account_typeがthenの場合、、 if then 、if then 、およびifthendを表示する必要があります。このクエリを試しました。DBAaapplicationvvendorhhuman

SELECT da.account_name, da.account_id,da.manager_lastname, da.manager_firstname, 
dap.live_password_change, dap.dev_password_change, das.status_desc, 
REPLACE(RTRIM(CONCAT(IF(da.account_type = 'd', 'DBAs', 'NO'))), ' ', ', ')
FROM dba_account da
LEFT JOIN dba_account_password dap ON da.account_id = dap.account_id
LEFT JOIN dba_account_status das ON da.status = das.status_id
WHERE CAST(da.account_name AS BINARY) RLIKE '[a-z]'
AND da.account_name NOT RLIKE '[#$\\\\////]'
ORDER BY da.account_name

しかし、私は4つの条件を比較する方法を知りません。何か提案はありますか?

4

3 に答える 3

4

次のように使用CASEします。

    SELECT da.account_name, da.account_id,da.manager_lastname, da.manager_firstname, 
dap.live_password_change, dap.dev_password_change, das.status_desc, 
CASE da.account_type 
    WHEN 'd' THEN 'DBAs'
    WHEN 'a' THEN 'application'
    WHEN 'v' THEN 'vendor'
    WHEN 'h' then 'human' 
    ELSE 'NO' END as 'account_type'
FROM dba_account da
LEFT JOIN dba_account_password dap ON da.account_id = dap.account_id
LEFT JOIN dba_account_status das ON da.status = das.status_id
WHERE CAST(da.account_name AS BINARY) RLIKE '[a-z]'
AND da.account_name NOT RLIKE '[#$\\\\////]'
ORDER BY da.account_name
于 2012-09-10T22:02:25.433 に答える
1

CASEステートメントを試してください。switch多くの言語のように機能します。

于 2012-09-10T21:54:12.377 に答える
0

SQLでcaseステートメントを使用できます。クエリは次のように書き直されます。

SELECT 
    da.account_name, da.account_id,da.manager_lastname, da.manager_firstname, 
    dap.live_password_change, dap.dev_password_change, das.status_desc, 
    CASE da.account_type\
        WHEN 'd' THEN 'DBAs'
        WHEN 'v' THEN 'vendor'
        WHEN 'h' THEN 'human'
        ELSE 'unknown'
    END
FROM 
    dba_account da LEFT JOIN 
        dba_account_password dap ON da.account_id = dap.account_id 
LEFT JOIN 
    dba_account_status das ON da.status = das.status_id 
WHERE 
    CAST(da.account_name AS  BINARY) RLIKE '[a-z]' 
    AND da.account_name NOT RLIKE '[#$\\\\////]' 
ORDER BY 
    da.account_name;

MySQL 5.6のcaseステートメントの詳細については、http: //dev.mysql.com/doc/refman/5.6/en/control-flow-functions.htmlにアクセスしてください。

于 2012-09-10T22:04:47.463 に答える