我有一列:account_type,其中包含四个字符。 d
,h
,v
,a
。现在,如果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