自己在网上发了一个帖子,问题如下:
假如有一个表 ACCOUNT
ACCOUNTID, NAME, TYPEA001, JOHN, TUTOR
A002, MIKE, TUTOR
A003, JIM, STUDENT
A004, LILY, STUDENT
另一个表 APPOINTMENT
STUDENTID, TUTORID
A003, A001
A004, A002
备注:STUDENTID和TUTORID都是ACCOUNTID的外键。
现在想得到student和tutor名字的对应列表,比如根据表APPOINTMENT和ACCOUNT,有如下结果
STUDENTNAME, TUTORNAME
JIM, JOHN
LILY, MIKE
答案: (来自优快云网友回答)
create table ACCOUNT(ACCOUNTID varchar(10), NAME varchar(10), TYPE varchar(10)) insert into ACCOUNT select 'A001', 'JOHN', 'TUTOR' union all select 'A002', 'MIKE', 'TUTOR' union all select 'A003', 'JIM', 'STUDENT' union all select 'A004', 'LILY', 'STUDENT' create table APPOINTMENT(STUDENTID varchar(10), TUTORID varchar(10)) insert into APPOINTMENT select 'A003', 'A001' union all select 'A004', 'A002' go select (select NAME from ACCOUNT a where a.ACCOUNTID = aa.STUDENTID) STUDENTNAME, (select NAME from ACCOUNT a where a.ACCOUNTID = aa.TUTORID) TUTORNAME from APPOINTMENT aa /* STUDENTNAME TUTORNAME JIM JOHN LILY MIKE */
或者
select
b.
name
'STUDENTNAME'
,c.
name
'TUTORNAME'
from
APPOINTMENT a
left
join
ACCOUNT b
on
a.STUDENTID=b.ACCOUNTID
left
join
ACCOUNT c
on
a.TUTORID=c.ACCOUNTID