从其他表中选择用户名,如果为NULL

时间:2019-05-04 17:17:43

标签: mysql

如果另一个表具有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_userfh_users仅用于将CONCAT与主用户名一起使用的用户名。

用户表

enter image description here

FTP用户

enter image description here

结果

enter image description here

预期结果

如果fh_ftp_user.usernameNULL,请将fh_users.username设置为userid 否则,如果fh_ftp_user.username 不是 NULL,则将两个用户名并用下划线标记为userid

我如何在这里创建子查询来处理这些行为?

1 个答案:

答案 0 :(得分:1)

使用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`,
     ....