我有一列:account_type,其中包含四个字符。 dhva。现在,如果account_type为d,则应显示DBA,如果a然后是application,如果v然后是vendor,如果h然后是human。我试过这个查询。

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个条件。有什么建议吗?

最佳答案

您将使用类似于以下内容的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

10-04 22:08
查看更多