tra*_*ars 0 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`)
Run Code Online (Sandbox Code Playgroud)
应该工作正常,但事实并非如此.如果updaterid不是NULL,它返回有效的结果,但如果是,则继续得到空结果.关于这个的任何想法?
PS我也尝试了一些这样的组合,例如WHERE或不同种类的JOIN.
Pet*_*Wal 12
如果我理解正确(您没有提供任何检查数据),此查询将提供您想要的数据:
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`)
Run Code Online (Sandbox Code Playgroud)
u2.Name将NULL如果a.updateridIS NULL`(或更新用户被删除),或者否则将保持的名称.
| 归档时间: |
|
| 查看次数: |
13563 次 |
| 最近记录: |