+ -
当前位置:首页 → 问答吧 → 这个查询怎么写?

这个查询怎么写?

时间:2011-12-13

来源:互联网

SQL code

/*
T_table1:
款号 颜色 尺码
001  红色  21
001  红色  22
001  红色  23
001  黄色  21
001  黄色  22
001  黄色  23
001  蓝色  21
001  蓝色  22
001  蓝色  23
002  红色  21
002  红色  22
002  红色  23
002  黄色  21
002  黄色  22
002  黄色  23
002  蓝色  21
002  蓝色  22
002  蓝色  23
003  红色  21
003  红色  22
003  红色  23
003  黄色  21
003  黄色  22
003  黄色  23
003  蓝色  21
003  蓝色  22
003  蓝色  23

...一共有两百万条记录

T_table2:(以款号和颜色作为主键唯一的)
  款号  颜色 
  001   红色
  001   黄色
  003   蓝色


目的:列出T_table2所对应的所有尺码
如何通过T_table1与T_table2 进行查询得出以下结果:
(要注意查询速度呀,因为table1有两百万条记录)

款号 颜色 尺码
001  红色  21
001  红色  22
001  红色  23
001  黄色  21
001  黄色  22
001  黄色  23
003  蓝色  21
003  蓝色  22
003  蓝色  23

*/
----建立测试环境(MSSQL2000)
if  exists (select * from sysobjects where id = object_id(N'T_table1') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table T_table1
GO
if  exists (select * from sysobjects where id = object_id(N'T_table2') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table T_table2
GO
CREATE TABLE [T_table1] (
    [款号] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [颜色] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [尺码] [int] NULL 
) ON [PRIMARY]
GO
CREATE TABLE [T_table2] (
    [款号] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [颜色] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    CONSTRAINT [PK_T_table2] PRIMARY KEY  CLUSTERED 
    (
        [款号],
        [颜色]
    )  ON [PRIMARY] 
) ON [PRIMARY]
GO
Insert T_table1 (款号,颜色,尺码)  Values ( '001','红色',21)
Insert T_table1 (款号,颜色,尺码)  Values ( '001','红色',22)
Insert T_table1 (款号,颜色,尺码)  Values ( '001','红色',23)
Insert T_table1 (款号,颜色,尺码)  Values ( '001','蓝色',21)
Insert T_table1 (款号,颜色,尺码)  Values ( '001','蓝色',22)
Insert T_table1 (款号,颜色,尺码)  Values ( '001','蓝色',23)
Insert T_table1 (款号,颜色,尺码)  Values ( '002','红色',21)
Insert T_table1 (款号,颜色,尺码)  Values ( '002','红色',22)
Insert T_table1 (款号,颜色,尺码)  Values ( '002','红色',23)
Insert T_table1 (款号,颜色,尺码)  Values ( '002','黄色',21)
Insert T_table1 (款号,颜色,尺码)  Values ( '002','黄色',22)
Insert T_table1 (款号,颜色,尺码)  Values ( '002','黄色',23)
Insert T_table1 (款号,颜色,尺码)  Values ( '002','蓝色',21)
Insert T_table1 (款号,颜色,尺码)  Values ( '002','蓝色',22)
Insert T_table1 (款号,颜色,尺码)  Values ( '002','蓝色',23)
Insert T_table1 (款号,颜色,尺码)  Values ( '003','红色',21)
Insert T_table1 (款号,颜色,尺码)  Values ( '003','红色',22)
Insert T_table1 (款号,颜色,尺码)  Values ( '003','红色',23)
Insert T_table1 (款号,颜色,尺码)  Values ( '003','黄色',21)
Insert T_table1 (款号,颜色,尺码)  Values ( '003','黄色',22)
Insert T_table1 (款号,颜色,尺码)  Values ( '003','黄色',23)
Insert T_table1 (款号,颜色,尺码)  Values ( '003','蓝色',21)
Insert T_table1 (款号,颜色,尺码)  Values ( '003','蓝色',22)
Insert T_table1 (款号,颜色,尺码)  Values ( '003','蓝色',23)
Insert T_table1 (款号,颜色,尺码)  Values ( '001','黄色',21)
Insert T_table1 (款号,颜色,尺码)  Values ( '001','黄色',22)
Insert T_table1 (款号,颜色,尺码)  Values ( '001','黄色',23)

go

Insert T_table2 (款号,颜色)  Values ( '001','红色')
Insert T_table2 (款号,颜色)  Values ( '001','黄色')
Insert T_table2 (款号,颜色)  Values ( '003','蓝色')

go

select * from T_table1 order by 款号
select * from T_table2






作者: SKY1006   发布时间: 2011-12-13

SQL code

select b.*
from table2 a join table1 b on a.款号 = b.款号 and a.颜色 = b.颜色

作者: AcHerat   发布时间: 2011-12-13

SQL code

select b.*
from T_table2 a
inner join T_table1 b
on a.款号=b.款号 and a.颜色=b.颜色

款号         颜色          尺码
-------- ----------- -----------
001        红色           21
001        红色           22
001        红色           23
003        蓝色           21
003        蓝色           22
003        蓝色           23
001        黄色           21
001        黄色           22
001        黄色           23

(9 row(s) affected)


作者: ap0405140   发布时间: 2011-12-13