字段不为空时MYSQL连接
我希望通过读取一整张表、连接另一张表和一张表来从数据库获取数据,但只有在第一张表中指定的字段不为NULL时,才连接最后一张表。问题是:字段不为空时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`) 应该
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,请参见可以看到的示例数据,此处不需要这些数据。整个案件都是关于概念的。左键连接非常有效,非常感谢!!:)有关何时使用联接和何时左联接的详细信息,请参阅