gpt4 book ai didi

mysql - 使用列值作为表名连接表

转载 作者:可可西里 更新时间:2023-11-01 08:10:31 25 4
gpt4 key购买 nike

我读过很多关于连接表的问题,其中列值用作表名,但我不知道如何在我的案例中实现它。

我有多个表。第一个表是用户

    id   |  user_id  |  user_role
1 | 1 | admin
2 | 2 | manager
3 | 3 | employee

第二个表是 admin

    id    |   fname  |  lname
1 | A1 | J
2 | A2 | C
3 | A3 | S

第三张表是manager

    id      |   fname  |  lname
1 | M1 | J
2 | M2 | C
3 | M3 | S

第三个表是employee

    id       |   fname  |  lname
1 | E1 | J
2 | E2 | C
3 | E3 | S

我怎样才能让它变成这样:

SELECT * FROM user u INNER JOIN user.user_role ur ON ur.id = u.user_id

所以它会产生类似的东西

u.id | u.user_id | u.user_role | ur.id |  ur.fname | ur.lname
1 | 1 | admin | 1 | A1 | J
2 | 2 | manager | 2 | M2 | C
3 | 3 | employee | 3 | E3 | S

最佳答案

您可以为此使用UNION ALL:

SELECT      * 
FROM user u
INNER JOIN ( SELECT 'admin' as user_role, id, fname, lname
FROM admin
UNION ALL
SELECT 'manager' as user_role, id, fname, lname
FROM manager
UNION ALL
SELECT 'employee' as user_role, id, fname, lname
FROM employee
) ur
ON ur.id = u.user_id
AND ur.user_role = u.user_role

这里正在工作SQL fiddle .

关于mysql - 使用列值作为表名连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35390238/

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