gpt4 book ai didi

mysql - 通过连接另一个表从另一列中按 id 选择名称

转载 作者:行者123 更新时间:2023-11-29 07:43:16 25 4
gpt4 key购买 nike

呵呵,这是我能想到的最简单的标题了。

所以这是我的问题。我有两个表(例如数据):表:

EMPLOYEES
=====================================================
ID NAME SUPERVISOR LOCATION SALARY
-----------------------------------------------------
34 John AL 100000
17 Mike 34 PN 75000
5 Alan 34 LE 25000
10 Dave 5 NY 20000

第二个表(例如数据):

BONUS
========================================
ID Bonus
----------------------------------------
17 5000
34 5000
10 2000

我必须选择员工姓名、主管姓名以及奖金超过 1000 的每个人的奖金。所以我写了这个查询:

SELECT e.name, e.supervisor, b.bonus from employees e join bonus as b on b.empid = e.empid where b.bonus > 1000

但我不知道如何用姓名替换主管 ID 以获得此结果:

RESULT:
=====================================
Name Supervisor Bonus
-------------------------------------
Dave Alan 2000
John - 5000
Mike John 5000

你能帮我一下吗?我真的没主意了...

最佳答案

您需要再次加入 employees 表;您可以使用别名来区分对同一个表的两个引用:

SELECT e.name, s.name AS supervisor, b.bonus
FROM employees AS e
JOIN bonus AS b USING (empid)
LEFT JOIN employees AS s ON s.empid = e.supervisor
WHERE b.bonus > 1000

查看 sqlfiddle .

需要LEFT JOIN,因为您还希望包括没有主管的员工(例如约翰)。请参阅A Visual Explanation of SQL Joins获取更多信息。

另一种效率较低(但有时更容易理解)的方法是使用相关子查询:

SELECT e.name, (SELECT name FROM employees WHERE empid=e.supervisor), b.bonus
FROM employees AS e
JOIN bonus AS b USING (empid)
WHERE b.bonus > 1000

查看 sqlfiddle .

关于mysql - 通过连接另一个表从另一列中按 id 选择名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28484820/

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