字段不为空时MYSQL连接

字段不为空时MYSQL连接,mysql,database,join,Mysql,Database,Join,我希望通过读取一整张表、连接另一张表和一张表来从数据库获取数据,但只有在第一张表中指定的字段不为NULL时,才连接最后一张表。问题是: SELECT a.*, u1.Name, u2.Name FROM `articles` a JOIN `users` u1 ON (a.id=1 AND u1.`id` = a.`authorid` ) JOIN `users` u2 ON (a.`updaterid` IS NOT NULL AND u2.`id` = a.`updaterid`) 应该

我希望通过读取一整张表、连接另一张表和一张表来从数据库获取数据,但只有在第一张表中指定的字段不为NULL时,才连接最后一张表。问题是:

SELECT a.*, u1.Name, u2.Name FROM `articles` a
JOIN `users` u1 ON (a.id=1 AND u1.`id` = a.`authorid` )
JOIN `users` u2 ON (a.`updaterid` IS NOT NULL AND u2.`id` = a.`updaterid`) 
应该可以,但是不行。若updaterid不为NULL,它将返回有效结果,但若为NULL,我将继续得到空结果。关于这个有什么想法吗


PS我还尝试了一些与此相关的组合,例如使用WHERE或不同类型的连接。

如果我理解正确(您没有提供任何examlpe数据),此查询将提供您想要的数据:

SELECT a.*, u1.Name, u2.Name FROM `articles` a
JOIN `users` u1 ON (a.id=1 AND u1.`id` = a.`authorid` )
LEFT JOIN `users` u2 ON (a.`updaterid` IS NOT NULL AND u2.`id` = a.`updaterid`) 

u2.Name
如果
a.updaterid
为NULL`(或更新程序用户被删除),则将为
NULL
,否则将保留该名称。

如果我理解正确(您没有提供任何examlpe数据),此查询将提供您需要的数据:

SELECT a.*, u1.Name, u2.Name FROM `articles` a
JOIN `users` u1 ON (a.id=1 AND u1.`id` = a.`authorid` )
LEFT JOIN `users` u2 ON (a.`updaterid` IS NOT NULL AND u2.`id` = a.`updaterid`) 

u2.Name
如果
a.updaterid
为NULL`(或更新程序用户被删除),则将为
NULL
,否则将保留名称。

将两个连接都进行外部连接

SELECT a.*, u1.Name, u2.Name 
FROM `articles` a
   Left JOIN `users` u1 
      ON u1.`id` = a.`authorid`
        AND a.id=1
   left JOIN `users` u2 
      ON  u2.`id` = a.`updaterid`
         AND a.`updaterid` IS NOT NULL 
一旦你这样做了,你可能就不需要
不为空
条件了

SELECT a.*, u1.Name, u2.Name 
FROM `articles` a
   Left JOIN `users` u1 
      ON u1.`id` = a.`authorid`
        AND a.id=1
   left JOIN `users` u2 
      ON  u2.`id` = a.`updaterid`

使两个连接成为外部连接

SELECT a.*, u1.Name, u2.Name 
FROM `articles` a
   Left JOIN `users` u1 
      ON u1.`id` = a.`authorid`
        AND a.id=1
   left JOIN `users` u2 
      ON  u2.`id` = a.`updaterid`
         AND a.`updaterid` IS NOT NULL 
一旦你这样做了,你可能就不需要
不为空
条件了

SELECT a.*, u1.Name, u2.Name 
FROM `articles` a
   Left JOIN `users` u1 
      ON u1.`id` = a.`authorid`
        AND a.id=1
   left JOIN `users` u2 
      ON  u2.`id` = a.`updaterid`

考虑提供适当的DDL(和/或SqLFIDLE)与期望的结果集一起考虑,提供适当的DDL(和/或SqLFIDLE),连同期望的结果SETAS可以看出,这里不需要示例数据。整个案件都是关于概念的。左键连接非常有效,非常感谢!!:)对于exlpenation,何时使用JOIN,何时使用LEFT JOIN,请参见可以看到的示例数据,此处不需要这些数据。整个案件都是关于概念的。左键连接非常有效,非常感谢!!:)有关何时使用联接和何时左联接的详细信息,请参阅