如何从 users
表中选择行条目,如果另一个表有一个 NULL
值?
SELECT
CONCAT(`fh_users`.`username`, '_', `fh_ftp_user`.`username`) AS `userid`,
`fh_ftp_user`.`password` AS `passwd`,
'1010' AS `uid`,
'1010' AS `gid`,
`fh_ftp_user`.`path` AS `homedir`,
'/sbin/nologin' AS `shell`
FROM
`fh_ftp_user`,
`fh_users`
WHERE
`fh_ftp_user`.`username`='%U'
OR
(`fh_ftp_user`.`user_id`=`fh_users`.`id` AND `fh_users`.`username`='%U' AND `fh_ftp_user`.`username` IS NULL)"
隐含的,表 fh_ftp_user
将被选中。 fh_users
将仅用于CONCAT
用户名与主用户名。
用户表
FTP 用户
结果
预期结果
如果fh_ftp_user.username
为NULL
,设置fh_users.username
为userid
否则,如果 fh_ftp_user.username
是不是 NULL
,则将两个用户名与下划线连接为 userid
。
我如何在这里创建一个子查询来处理这些行为?
最佳答案
使用 CASE
你可以处理这种情况:
SELECT
CASE WHEN fh_ftp_user.username IS NULL THEN fh_users.username
ELSE CONCAT(`fh_users`.`username`, '_', `fh_ftp_user`.`username`)
END AS `userid`,
....
关于mysql - 从其他表中选择用户名,如果为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55985014/