在 mysql 上
select ID,NAME
,(select LAN from LANG where LANG.id=PROVIDER.ID and LAN='English' limit 1)
as LAN1
,(select LAN from LANG where LANG.id=PROVIDER.ID and LAN='Tamil' limit 1)
as LAN2
,(select LAN from LANG where LANG.id=PROVIDER.ID and LAN='Telugu' limit 1)
as LAN3
from PROVIDER;
在 sqlserver 上感谢 @Bungicasse 的回答
select ID,NAME
,(select TOP 1 LAN from LANG where LANG.id=PROVIDER.ID and LAN='English')
as LAN1
,(select TOP 1 LAN from LANG where LANG.id=PROVIDER.ID and LAN='Tamil' )
as LAN2
,(select TOP 1 LAN from LANG where LANG.id=PROVIDER.ID and LAN='Telugu')
as LAN3
from PROVIDER;
和构建模式脚本
在mysql上
drop table if exists LANG;
drop table if exists PROVIDER;
CREATE TABLE LANG (
ID int(11) NOT NULL,
LAN varchar(255) NOT NULL
);
INSERT INTO lang (ID, Lan) VALUES (1, 'English');
INSERT INTO lang (ID, Lan) VALUES (2, 'English');
INSERT INTO lang (ID, Lan) VALUES (2, 'Tamil');
INSERT INTO lang (ID, Lan) VALUES (3, 'English');
INSERT INTO lang (ID, Lan) VALUES (3, 'Tamil');
INSERT INTO lang (ID, Lan) VALUES (3, 'Telugu');
CREATE TABLE PROVIDER (
ID int(11) NOT NULL,
NAME varchar(255) NOT NULL,
PRIMARY KEY (ID)
);
INSERT INTO PROVIDER VALUES (1, 'name1');
INSERT INTO PROVIDER VALUES (2, 'name2');
INSERT INTO PROVIDER VALUES (3, 'name3');
在 mssql 上
CREATE TABLE LANG (
ID INTEGER NOT NULL,
LAN varchar(255) NOT NULL
);
INSERT INTO lang (ID, Lan) VALUES (1, 'English');
INSERT INTO lang (ID, Lan) VALUES (2, 'English');
INSERT INTO lang (ID, Lan) VALUES (2, 'Tamil');
INSERT INTO lang (ID, Lan) VALUES (3, 'English');
INSERT INTO lang (ID, Lan) VALUES (3, 'Tamil');
INSERT INTO lang (ID, Lan) VALUES (3, 'Telugu');
CREATE TABLE PROVIDER (
ID INTEGER NOT NULL,
NAME varchar(255) NOT NULL,
PRIMARY KEY (ID)
);
INSERT INTO PROVIDER VALUES (1, 'name1');
INSERT INTO PROVIDER VALUES (2, 'name2');
INSERT INTO PROVIDER VALUES (3, 'name3');
在这里测试一下
sql fiddle