Php-mysql离开join没有结果的问题


Php mysql left join no result issue

我有一个使用左联接的查询,我的问题是,如果右表为空,我就无法获得用于ON子句的值,我的意思是;

   SELECT members.*,
          photos.* 
   FROM   members LEFT JOIN photos on members.member_id = photos.member_id

现在,如果它从照片表返回结果,那就可以了。但当照片表没有结果时,它从成员表返回,但不返回member_id。它返回成员表中的所有其他成员,但不返回member_id

这里的问题是有两个名称相同的列。

尝试重命名一个以避免冲突:

SELECT *, members.member_id AS real_member_id

members.member_id一个别名。

SELECT members.member_id as m_id, [other column you want] 
FROM members LEFT JOIN photos on members.member_id = photos.member_id

it returns all others from members table but not member_id是什么意思?是否返回(null)?基本上是的,它全部返回成员表中的所有记录,因为您是从左边加入的(成员表)。但如果来自member_id的记录不存在,则返回null。您必须为该列指定一个ALIAS,因为您有两个具有相同名称的字段。

members.member_id AS MemberID

最好在SELECT列表中明确写入您想要的列:

SELECT members.member_id
       members.name,
       photos.photo_id,
       photos.filename,
       ... 

然后您可以确保没有两列具有相同的名称。这也更好,因为当表的某个结构发生更改时,您的查询将中断,您将很容易找到原因。现在,它被一种意想不到的方式打破了。


如果唯一常用的列是member_id,并且您确实需要所有的列,那么这也可以:

SELECT * 
FROM   members NATURAL LEFT JOIN photos