1.试过 left join 如下:  
select  *  from  `guestbook`  as  g  left  join  `user`  as  u  on  u.userid=g.userid  where  g.usernamelike  '%faisun%'  or  u.username  like  '%faisun%'  
这条语句出现的问题是:记录1  的  username  值为空,因为 `u`  中没有匹配的记录,所以  `u`.username  为空.想要的是记录1  的  usrename  值为  '填写的用户名'  
 
2.而单单检索  `u`  表也不行,因为那样无法按 username 搜索  
 
3.`u`  表中的用户记录是变动的,所以`g`表中  userid  >0  时  username,email,title  写上对应的值也不行.不可能用户更改注册资料的时候,也改一遍  `g`  中的记录.  

解决方案 »

  1.   

    1使用ifnull  select ifnull(u.username, g.username), ifnull(u.email,g.email) from ........2.使用union  select username, email from user,guestbook where userid=guestbookid and  ......
      union
      select username, email from guestbook where guestbookid=0 and .......后面的......自己加上union是要mysql4.1的,ifnull不清楚,自己试一下
      

  2.   

    不是说mysql 不支持 union 吗,我查了 mysql 手册,没有这个说明
      

  3.   

    不是说mysql 不支持 union 吗,我查了 mysql 手册,没有这个说明
    ----------------------------------------------------------
    4.1.* 版本已经支持union查询了