如果另一个表具有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
。
我如何在这里创建子查询来处理这些行为?
答案 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`,
....