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

问个多表查询的sql
表A的结构,用户记录

ID               Sex
1                 男
2                 女  
.....
______________________________________________

表B的结构,消费记录

ID         Trademony  
2                 100
1                 500
.....

两个表中字段ID是一一对应的,表B记录用户每次的消费记录。
现在要得到“男性”用户消费记录大于200的人的列表,怎么写这个sql语句比较好,望不吝赐教

------解决方案--------------------
SELECT [ID]
FROM 表B
WHERE [ID] IN (SELECT [ID] FROM 表A WHERE Sex = '男 ')
GROUP BY [ID]
HAVING SUM(Trademony) > 200
------解决方案--------------------
select a.* from a inner join (select distinct id from b where Trademony > 200) b on a.id=b.id where a.Sex= '男 '

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

最新版本:20070130

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
------解决方案--------------------

select * from A
inner join B on A.id=B.id
where A.sex= '男 ' and B.Trademony> 200
------解决方案--------------------
select * from a where id in (select id from b where trademony> 200) and sex= '男 '