2014-09-20 86 views
0

我想在wordpress表wp_postswp_postmeta上執行左連接。爲什麼我的左連接表現爲內連接

wp_posts

select ID from wp_posts 

簡單地用選定的起始是輸出:

'1' 
'2' 
'14' 
'15' 
'16' 
'17' 
... 

應該做我的左連接查詢

select a.ID from wp_posts a 
left JOIN wp_postmeta b on b.post_id = a.ID 

這是輸出:

'1' 
'1' 
'1' 
'2' 
'2' 
'2' 
'14' 
'14' 
'14' 
... 

這是不正確的,我的左連接不像左連接這裏。

簡單的左連接有什麼問題?

+1

左加入*是一個外部加入! OUTER關鍵字是可選的!?!?! – Strawberry 2014-09-20 09:49:12

+1

如果您願意,請考慮遵循以下簡單的兩步操作步驟:1.如果您尚未這樣做,請提供適當的DDL(和/或sqlfiddle),以便我們可以更輕鬆地複製問題。 2.如果您還沒有這樣做,請提供與步驟1中提供的信息相對應的所需結果集。 – Strawberry 2014-09-20 09:50:37

+0

我的猜測是post_meta中有3條記錄,post_id是1 – Gervs 2014-09-20 11:37:12

回答

0

它正在工作,因爲它應該。我無法想象LEFT JOIN返回的行少於其他方面相同的INNER JOIN的原因;可能最簡單的方法來說明這是將wp_postmeta中的字段添加到SELECTed字段並查看結果。 現在,如果你從wp_posts希望所有ID值,你可以這樣做:

SELECT DISTINCT a.ID 
FROM wp_posts a 
LEFT JOIN wp_postmeta b ON b.post_id = a.ID 
; 

但它不會作出了一大堆的道理,爲什麼你會不只是使用原來的(非加盟)查詢。