Mysql 选择使用if查询
我有一个列:account\u type,它包含四个字符<代码>d,Mysql 选择使用if查询,mysql,select,if-statement,Mysql,Select,If Statement,我有一个列:account\u type,它包含四个字符d,h,v,a。现在,如果帐户类型是d,那么它应该显示DBA,如果a那么应用程序,如果v那么供应商,如果h那么人。我试过这个问题 SELECT da.account_name, da.account_id,da.manager_lastname, da.manager_firstname, dap.live_password_change, dap.dev_password_change, das.status_desc, REPLAC
h
,v
,a
。现在,如果帐户类型是d
,那么它应该显示DBA
,如果a
那么应用程序
,如果v
那么供应商
,如果h
那么人
。我试过这个问题
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种情况。有什么建议吗?试试看。在许多语言中,它都像开关一样工作。试试看。在许多语言中,它的工作原理类似于开关。您可以使用类似于以下内容的案例:
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
您将使用与此类似的
案例
:
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
您可以在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语句的更多信息,请访问:
您可以在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语句的更多信息,请访问:
嘿,我试过使用case,但它显示语法错误。你能给我举个例子吗?谢天谢地,我试过使用case,但它说语法错误。你能给我举个例子吗?thanksit说:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法(从dba_account da左侧加入dba_account_密码dap ON da.accou,在第行)1@ashah142查看我的编辑,在不使用
REPLACE(RTRIM(CONCAT))的情况下进行尝试(
Abround It说:您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以获得可在附近使用的正确语法“,”,”),从dba_帐户da左加入dba_帐户\密码dap在da.accou行1@ashah142查看我的编辑,在不使用替换(RTRIM)(CONCAT()的情况下进行尝试