首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求1sql语句,请大神们指点一下

2013-11-12 
求一sql语句,请大神们指点一下有两个数据表:CREATE TABLE [dbo].[Table_A]([ID] [int] IDENTITY(1,1) NOT

求一sql语句,请大神们指点一下
有两个数据表:


CREATE TABLE [dbo].[Table_A](
[ID] [int] IDENTITY(1,1) NOT NULL,
[StrA] [nvarchar](50) NULL,
[StrB] [nvarchar](50) NULL
) ON [PRIMARY]
INSERT INTO Table_A(StrA,StrB)VALUES('A','A')
INSERT INTO Table_A(StrA,StrB)VALUES('B','B')
INSERT INTO Table_A(StrA,StrB)VALUES('C','C')
INSERT INTO Table_A(StrA,StrB)VALUES('D','D')

CREATE TABLE [dbo].[Table_B](
[ID] [int] IDENTITY(1,1) NOT NULL,
[A] [nvarchar](50) NULL,
[B] [nvarchar](50) NULL
) ON [PRIMARY]

INSERT INTO Table_B(A,B) VALUES('A,B','AB')
INSERT INTO Table_B(A,B) VALUES('A,B,C','ABC')
INSERT INTO Table_B(A,B) VALUES('A,B,D','ABD')
INSERT INTO Table_B(A,B) VALUES('A,B,C,D','ABCD')

我想要的结果是:
select * from Table_A where StrA in (select A from Table_B where B='ABCD')
--显示出Table_A的四条数据。请高手指点。


[解决办法]
select * from table_A a ,table_B b where charindex(','+a.StrA+',',','+b.a+',')>0

[解决办法]

CREATE TABLE [dbo].[Table_A](
[ID] [int] IDENTITY(1,1) NOT NULL,
[StrA] [nvarchar](50) NULL,
[StrB] [nvarchar](50) NULL
) ON [PRIMARY]
INSERT INTO Table_A(StrA,StrB)VALUES('A','A')
INSERT INTO Table_A(StrA,StrB)VALUES('B','B')
INSERT INTO Table_A(StrA,StrB)VALUES('C','C')
INSERT INTO Table_A(StrA,StrB)VALUES('D','D')

CREATE TABLE [dbo].[Table_B](
[ID] [int] IDENTITY(1,1) NOT NULL,
[A] [nvarchar](50) NULL,
[B] [nvarchar](50) NULL
) ON [PRIMARY]

INSERT INTO Table_B(A,B) VALUES('A,B','AB')
INSERT INTO Table_B(A,B) VALUES('A,B,C','ABC')
INSERT INTO Table_B(A,B) VALUES('A,B,D','ABD')
INSERT INTO Table_B(A,B) VALUES('A,B,C,D','ABCD')

--我想要的结果是:
select * from Table_A where CHARINDEX(StrA,(select A from Table_B where B='ABCD'))>0
--显示出Table_A的四条数据。请高手指点。
/*
IDStrAStrB
--------------------------
1AA
2BB
3CC
4DD
*/

[解决办法]
是这样不:




CREATE TABLE [dbo].[Table_A](
[ID] [int] IDENTITY(1,1) NOT NULL,
[StrA] [nvarchar](50) NULL,
[StrB] [nvarchar](50) NULL
) ON [PRIMARY]
INSERT INTO Table_A(StrA,StrB)VALUES('A','A')
INSERT INTO Table_A(StrA,StrB)VALUES('B','B')
INSERT INTO Table_A(StrA,StrB)VALUES('C','C')
INSERT INTO Table_A(StrA,StrB)VALUES('D','D')

CREATE TABLE [dbo].[Table_B](
[ID] [int] IDENTITY(1,1) NOT NULL,
[A] [nvarchar](50) NULL,
[B] [nvarchar](50) NULL
) ON [PRIMARY]

INSERT INTO Table_B(A,B) VALUES('A,B','AB')
INSERT INTO Table_B(A,B) VALUES('A,B,C','ABC')
INSERT INTO Table_B(A,B) VALUES('A,B,D','ABD')
INSERT INTO Table_B(A,B) VALUES('A,B,C,D','ABCD')


select a.*
from Table_A a
inner join  Table_B b
        on b.B='ABCD' and
           charindex(','+a.strB+',',','+b.a+',')>0

/*
IDStrAStrB
1AA
2BB
3CC
4DD
*/

[解决办法]

CREATE TABLE [dbo].[#Table_A](
[ID] [int] IDENTITY(1,1) NOT NULL,
[StrA] [nvarchar](50) NULL,
[StrB] [nvarchar](50) NULL
) ON [PRIMARY]
INSERT INTO #Table_A(StrA,StrB)VALUES('A','A')
INSERT INTO #Table_A(StrA,StrB)VALUES('B','B')
INSERT INTO #Table_A(StrA,StrB)VALUES('C','C')
INSERT INTO #Table_A(StrA,StrB)VALUES('D','D')

CREATE TABLE [dbo].[#Table_B](
[ID] [int] IDENTITY(1,1) NOT NULL,
[A] [nvarchar](50) NULL,
[B] [nvarchar](50) NULL
) ON [PRIMARY]

INSERT INTO #Table_B(A,B) VALUES('A,B','AB')
INSERT INTO #Table_B(A,B) VALUES('A,B,C','ABC')
INSERT INTO #Table_B(A,B) VALUES('A,B,D','ABD')
INSERT INTO #Table_B(A,B) VALUES('A,B,C,D','ABCD')

select * from #Table_A where charindex(StrA,(select A from #Table_B where B='ABCD'))>0

热点排行