日期:2014-05-17  浏览次数:20460 次

mysql 两个表联合 按照两个字段排序
有两个表,member(用户)和album(用户相册)。
member内有这几个字段:uid(用户id),chk(用户的审核状态,0或者1),其他字段省略。
album内有如下字段:uid(用户id),chk(相册或者照片的审核状态,值为0或1),其他省略。
member表内的部分用户在album表内有记录,而且可能有多条记录,比如张三在album内有三条记录,第一条记录的chk为0,第二三条记录的chk为1.
问题来了,我想列出所有的用户(无论album表内是否有其对应字段)。要求是:第一,member内chk值为0的用户最优先列出,第二,album表内如果某个用户对应的记录中,有chk值为0的按照优先级第二的顺序列出。
表的结构不能改,别人写死了。
求大神回复。。
sql mysql

------解决方案--------------------
可以试试子查询吧!
------解决方案--------------------
这个? 试试
select *
from member m 
left join album a on m.uid = a.uid
order by m.chk,a.chk
------解决方案--------------------
我给你个sqlserver的写法,mysql不会,不保证能用,以后发到mysql去问会比较有效:
select *
from member m left join album a on m.uid=a.uid
order by m.chk,a.chk
------解决方案--------------------
SELECT a.*
FROM member a
LEFT JOIN
(SELECT DISTINCT [uid], chk FROM album WHERE chk=0) b
ON a.[uid] = b.[uid]
ORDER BY a.chk, b.chk DESC

------解决方案--------------------
这个建议是用外联接