簡體   English   中英

帶有LEFT JOIN的SELECT返回NULL值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM