gpt4 book ai didi

sql - 合并两列并找到对应的名称到另一个字段

转载 作者:行者123 更新时间:2023-12-01 00:09:43 27 4
gpt4 key购买 nike

我有一个名为“staff”的表。该表有 10 列:staffno、fname、lname、position、sex、dob、salary、branchno 和 manager。 “经理”列是人员经理的员工编号,如果他/她有一个,否则为 NULL。

我想找到每个员工和他们的经理的姓名(如果他们有的话)并将名字和姓氏合并在一列中。

我的代码如下:

SELECT CONCAT(staff.fname, ' ', staff.lname) AS StaffName ,
CONCAT(staff.fname, ' ', staff.lname) AS ManagerName
FROM staff WHERE staff.manager IS NOT NULL AND staff.staffno = staff.manager;

这段代码是否正确?

最佳答案

你需要一个 OUTER JOIN :

CREATE TABLE staff(staffno int, manager int, fname varchar(25),lname varchar(25));
INSERT INTO staff VALUES(1,null,'John','Brown');
INSERT INTO staff VALUES(2,1,'Joe','Miller');
INSERT INTO staff VALUES(3,1,'Julia','Roberts');

SELECT CONCAT(s1.fname, ' ', s1.lname) AS ManagerName ,
CONCAT(s2.fname, ' ', s2.lname) AS StaffName
FROM staff s1
RIGHT OUTER JOIN staff s2
ON s1.staffno = s2.manager
ORDER BY COALESCE(s2.manager,0), s2.staffno;

ManagerName StaffName
----------- -----------
John Brown
John Brown Joe Miller
John Brown Julia Roberts

上面的 SQL 适用于标记数据库,例如 mysqlpostgresqlsql-server

SQL Fiddle Demo

关于sql - 合并两列并找到对应的名称到另一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50829196/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com