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

这样的要求用inner join达不到效果,请教。
会员表
userid username

项目表project
id 
companyname 
types 
status 
username 
addtime 

===========
会员表的username和项目表的username对应起来,一对多
要求:
以项目表的types/status/username等为查询条件,联合查询会员表和项目表,会员表中的username只能显示一次,最终要显示出项目表中的一些信息

目前我的SQL语句是
select users.* from users inner join project on users.username=project.username where project.******
由于会员表和项目表是一对多的关系,所以查询出来的会员名会列出多条

如下数据:
会员表
1 test
2 you
3 hao
4 chen

项目表:
1 金山软件 类型1 状态1 test
2 QQ 类型2 状态1 you
3 CSDN 类型1 状态3 test
4 sohu 类型4 状态5 hao
5 金山软件 类型2 状态2 test

如果用我上面的SQL语句,当以companyname查询"金山软件"时,查询出来的数据会变成:
test
test
类似这样,而想得到的是不要重复,test用户只显示一条即可。

------解决方案--------------------
探讨
另外 :会员表中的记录不管有没在项目表中出现过,都让它显示

------解决方案--------------------
探讨

另外 :会员表中的记录不管有没在项目表中出现过,都让它显示

------解决方案--------------------
探讨

另外 :会员表中的记录不管有没在项目表中出现过,都让它显示

------解决方案--------------------
SQL code

--使用top 1取一行就行
select top 1 users.* from users inner join project on users.username=project.username where project.******

------解决方案--------------------
探讨

NOT EXISTS(SELECT 1 FROM project WHERE username=b.username AND ID>b.ID)

加上这句后,貌似如果查询的条件刚好满足的是第一数据,那就找不到记录了。