我有这个结构数据库
create table server(name varchar, dev varchar, qa varchar, prod varchar);
create table app(id varchar, teamname varchar);
insert into server values('trans', 't1','t2','t3');
insert into app values('t1', 'appdev');
insert into app values('t2', 'appqa');
insert into app values('t3', 'appprod');
我需要的是获取 t1、t2 和 t3 的值,我拥有的唯一变量是 server.name。我如何得到它。 我的初始查询如下所示
select(select app.teamname from app join server on app.id=server.dev)as devteam,
(select app.teamname from app join server on app.id=server.qa)as qateam,
(select app.teamname from app join server on app.id=server.prod)as prodteam from server where server.name='trans'
但它看起来真的又长又幼稚。有更好的方法来得到这个吗?
最佳答案
另一种方式——不一定更好,但也许更简单,是:
select
app1.teamname as devteam,
app2.teamname as qateam,
app3.teamname as prodteam
from
server
inner join app as app1 on app1.id = server.dev
inner join app as app2 on app2.id = server.qa
inner join app as app3 on app3.id = server.prod
where
server_name = 'trans';
关于mysql - SQL查询: Single row has multiple foreign keys from another table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50868403/