[英]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.