select带有基于其他列的值的临时列
我有mysql表,其中架构类似于下面的json数组。
[ { "id": 1, "firstName": "Charles Montgomery", "lastName": "Burns", "managerId": 12}, { "id": 2, "firstName": "Bart", "lastName": "Simpson", "managerId": 1}, { "id": 3, "firstName": "Marge", "lastName": "Simpson", "managerId": 1}, { "id": 4, "firstName": "Lisa", "lastName": "Simpson", "managerId": 1}, { "id": 5, "firstName": "Maggie", "lastName": "Simpson", "managerId": 1}, { "id": 6, "firstName": "Homer", "lastName": "Simpson", "managerId": 4}, { "id": 7, "firstName": "Ned", "lastName": "Flanders", "managerId": 4}, { "id": 8, "firstName": "Krusty", "lastName": "The Clown", "managerId": 2}, { "id": 9, "firstName": "Waylon", "lastName": "Smithers", "managerId": 2}, { "id": 10, "firstName": "Ralph", "lastName": "Wiggum", "managerId": 5}, { "id": 11, "firstName": "Itchy", "lastName": "", "managerId": 5}, { "id": 12, "firstName": "Comic Book Guy", "lastName": "", "managerId": 4} ]
managerId
字段是自引用id
字段的外键。
我需要做一个查询,这将添加列与飞机上的“managerName”计算从id
字段将保存连接firstName和lastName。
下面是我试过的(简化的)查询。 问号是由mysql驱动程序填充的占位符(在nodejs中):
SELECT * , (SELECT CONCAT_WS(' ', firstName, lastName) FROM employee WHERE managerId = id ) as managerName FROM employee WHERE employee.id = ?;
我意识到这个WHERE managerId = id
是看的地方,但我真的不知道什么条件来匹配正确的值。
谁能帮忙?
编辑如果有人绊倒相同的事情,我发现有用的文章 。 甚至例子都是类似的。
LEFT JOIN是你的朋友。 tra使用这样的查询:
SELECT e.*, CONCAT_WS(' ', m.firstName, m.lastName) AS managerName FROM employee e WHERE e.employee.id = ? LEFT JOIN employee m ON e.managerId = m.id;