日期:2014-05-18  浏览次数:20661 次

求一句SQL语句,能不能不用JOIN
现有一数据表
项目ID KEY VALUE
项目1 1 5
项目1 2 3
项目1 3 2
项目2 1 4
项目2 2 1
项目2 3 7
项目3 1 3
项目3 2 4
项目3 3 6

要求:
KEY=1,VALUE <=5;
KEY=2,VALUE <=3;
KEY=3,VALUE <=5;
取出满足以上3个条件的项目(当然,KEY对应的VALUE值可以变化)

理论上结果应该是项目1

我能想到的就是把自己这张表JOIN   N次,每次应用不同的KEY和VALUE值.
各位看看能不能不用JOIN就把需要的记录取出来,因为实际的KEY值数量可能是变化的,而表中数据量又不小...一旦JOIN太多影响效率的吧....

------解决方案--------------------
--不好意思,上面两个错了.

create table tb(项目ID varchar(10),[KEY] int,VALUE int)
insert into tb values( '项目1 ', 1, 5)
insert into tb values( '项目1 ', 2, 3)
insert into tb values( '项目1 ', 3, 2)
insert into tb values( '项目2 ', 1, 4)
insert into tb values( '项目2 ', 2, 1)
insert into tb values( '项目2 ', 3, 7)
insert into tb values( '项目3 ', 1, 3)
insert into tb values( '项目3 ', 2, 4)
insert into tb values( '项目3 ', 3, 6)

select t1.项目ID from
(select * from tb where [KEY]=1 and VALUE <=5) t1,
(select * from tb where [KEY]=2 and VALUE <=3) t2,
(select * from tb where [KEY]=3 and VALUE <=5) t3
where t1.项目ID = t2.项目ID and t1.项目ID = t3.项目ID

drop table tb

/*
项目ID
----------
项目1

(所影响的行数为 1 行)

*/