我无法想出一个应该是一个相当简单的问题的解决方案;
如果我做了;
SELECT *
FROM Database
它显示:
id | username | FName | LName | ReportsTo | email ---+----------+-------+---------+-----------+-------------------------------- 1 | fgibbins | Frank | Gibbins | rleo | fgibbins@fictionalcompany.com ---+----------+-------+---------+-----------+-------------------------------- 2 | rleo | Roger | Leo | null | rleo@gictionalcompany.com ---+----------+-------+---------+-----------+--------------------------------
我想要的是ReportsTo
中显示为FName
LName
的任何值。
实现此目的的最佳方法是什么,如何查看ReportsTo中的用户名以全名显示?
自从我使用SQL以来已经有一段时间了,所以我试图做到这一点。
答案 0 :(得分:0)
如果您正在处理的字段已修复,则可以执行
SELECT
id,
username,
FName,
LName,
FName + ' ' + LName AS ReportsTo,
email
FROM Database
答案 1 :(得分:0)
如果要组合两个列数据,可以使用CONCAT
函数。
自己加入你的桌子。
我想你想做这样的事。
SELECT t1.username,
t1.Fname,
t1.LName,
CONCAT(t1.FName,' ',t1.LName,' reports to ',t2.FName,' ',t2.LName) ReportsTo
FROM [Database] t1
LEFT JOIN [Database] t2 ON t1.ReportsTo = t2.username
WHERE t2.username IS NOT NULL
sqlfiddle:http://sqlfiddle.com/#!18/a0c1e/9
答案 2 :(得分:0)
试试这个(如果您愿意,可以将IFNULL
中的''更改为'无人'或其他内容):
SELECT t1.id, t1.username, CONCAT(t1.FName,' ',t1.LName) AS name, IFNULL(CONCAT(t2.FName, ' ', t2.LName), '') AS ReportsTo, t1.email
FROM `database` t1
LEFT JOIN `database` t2 ON t1.ReportsTo = t2.username
输出:
id username name ReportsTo email
1 fgibbins Frank Gibbins Roger Leo fgibbins@fictionalcompany.com
2 rleo Roger Leo rleo@gictionalcompany.com