繁体   English   中英

SELECT 临时列的值基于其他列

[英]SELECT with temporary column with value based on other column

我有一个 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字段的自引用外键。

我需要进行一个查询,该查询将使用从id字段计算的“managerName”动态添加列,该字段将保存连接的 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM