1.一张表中有用户信息表user(user_id,nickname),另外一张表联系人表contact(user_id,friend_id).现在要找出联系人的信息

SELECT U1.nickname as myselft,U2.nickname as friend FROM contact C inner join user U1 on C.user_id=U1.user_id inner join user U2 on C.friend_id=U2.id


以上如果friend_id可能为空的话,则后面那个inner join 改为left join.


2.查找出好友及自己发的帖子,帖子表invitation(id,owner_id,title,content)

SELECT * FROM ( invitation I inner join user U on U.user_id=I.owner_id )
inner join
(select friend_id from contacts where user_id=2 union all select 2) as B
 on B.friend_id=I.user_id

在mysql中就不要使用子查询了,mysql 5.5以前的版本对子查询效率极差。