left join 后的表多条记录.取1.
alist主表.记录每样物品的详细信息. 
 bopen次表.记录用户每次打开物品的记录. 
 每次A用户或B用户打开BOPEN后,BOPEN就会生产一条记录. 
 SQL生成了一个 
 case   when   not   XXXX   is   null   then    '1 '   else    '0 '   end   ynopen    
 如果有记录ynopen的值就为1,如果没有记录ynopen就为0   
 现用 
 select   alist.id   as   aid, 
 case   when   not   b.autoid   is   null   then    '1 '   else    '0 '   end   YNopen 
 from   alist   left   join   bopen   on   alist.id=b.id 
 where   条件语句 
 如此一来,会出现大量结果 
 于是就用了distinct进行精简重复的   
 select   alist.id   as   aid, 
 case   when   not   b.id   is   null   then    '1 '   else    '0 '   end   YNopen 
 from   alist   left   join   bopen   on   alist.id=b.id   and   username= 'a ' 
 where   条件语句   
 (主alist有2万多条记录.bopen打开记录也有1万条(以后会增加到上百万)) 
 用distinct精简后,可以实现ynopen的效果,但速度非常慢,平均会用7秒的时间. 
 其实对比的时候,我只需要判断bopen是否有用户的记录即可,如何写? 
 如果有记录,ynopen就为1,没有就为0,以标示用户是否打开过.
------解决方案--------------------或者   
 select alist.id as aid, 
 case when not b.autoid is null then  '1 ' else  '0 ' end YNopen 
 from alist left join (Select id, Max(autoid) As autoid From bopen Group By id) b on alist.id=b.id