难:应该有人问过的,有难度的字符串拼接查询!!!!
有数据:
pub_users表
-----------------------
userno username password
000000 aaa b
000001 bbb b
000002 ccc b
SYS_UsersToRoles表
------------------------
userno roleno
000002 00001
000002 00002
000001 00001
000001 00004
期望得到结果
-----------
userno username password roleno
000000 aaa b __
000001 bbb b 00001,00004
000002 ccc b 00001,00002
---自己写的差距比较大的脚本------------
SELECT
u.userno, logname,urole.roleno
FROM
PUB_USERS as u
left join dbo.SYS_UsersToRoles as Urole
on Urole.userno = u.userno
==========================================
测试数据脚本:
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[pub_users]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE pub_users
(
userno pub_userno PRIMARY KEY CLUSTERED ,
logname pub_username NOT NULL default(''),
password varchar(80) NOT NULL default(''),
)
GO
IF not exists (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[SYS_UsersToRoles]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE SYS_UsersToRoles
(
userNO pub_userno not null,
roleNO char(5) NOT NULL,
)
GO
insert into pub_users (userno,logname,password)
values('000000','aaa','b')
GO
insert into pub_users (userno,logname,password)
values ('000001','bbb','b')
GO
insert into pub_users (userno,logname,password)
values ('000002','ccc','b')
GO
insert into dbo.SYS_UsersToRoles (userno,roleNO)
values ('000002','00001')
insert into dbo.SYS_UsersToRoles (userno,roleNO)
values ('000002','00002')
GO