[英]SELECT with LEFT JOIN returns NULL values
我有两个桌子:
帖子 :
id | id_author | content | year
1 | 1 | hello | 2015
2 | 1 | world | 2016
3 | 2 | hi | 2016
最爱 :
id | id_author | id_post | year
1 | 3 | 2 | 2016
我想使用LEFT JOIN
进行SELECT
以按favorites
获取posts
数据。 因此,我做到了:(考虑到我是使用id_author = 3的用户登录的)
SELECT p.id, p.id_author, p.content, p.year, f.id_post
FROM favorites f
LEFT JOIN posts p
ON f.id_post = p.id
WHERE f.id_author = 3
ORDER BY f.id
DESC
所以,我做了:( $sql
等于上面的查询)
if(count($sql) > 0) {
var_dump($sql);
}
但是输出是:
array(1) {
[0]=>
array(5) {
["id"]=>
NULL
["id_author"]=>
NULL
["content"]=>
NULL
["year"]=>
NULL
["id_post"]=>
string(1) "2"
}
}
为什么返回NULL
?
给定OP的模式和数据,以下查询在语法上无效:
SELECT p.id, p.id_author, p.content, p.year, f.id_post
FROM favorites f
LEFT JOIN posts p
ON f.id_post = p.id
WHERE id_author = 3
ORDER BY f.id DESC
因为WHERE
子句的谓词使用的字段存在歧义: id_author = 3
。
您很可能具有p.id_author = 3
,这意味着WHERE
子句使用LEFT JOIN
操作的右表字段。 这会将LEFT JOIN
变成INNER JOIN
操作,没有结果。 因此,您可能必须使用:
WHERE f.id_author = 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.