2016-01-13 59 views
0

爲什麼下面的SQL查詢不返回命名評論第二個表中的所有列,而是隻有wp_users表的ID列?MySQL查詢不返回第二的列連接表

SELECT ID FROM wp_users 
INNER JOIN (select * from wp_comments) as comments 
ON ID = comments.user_id 
WHERE comments.comment_type = 'user_course' 

如果我更改查詢到下面的語句它的作品,因爲它應該是,這意味着一號的所有列和當然就符合WHERE條件的第二個表。

SELECT * FROM wp_users 
INNER JOIN (select * from wp_comments) as comments 
ON ID = comments.user_id 
WHERE comments.comment_type = 'user_course' 
+4

SELECT ID FROM ...做你要求的。如果你想要別的東西,你也必須要求。 –

+0

'select ID,comments。* from ...' – Kisaragi

+0

我指的是第一個查詢示例。 ID =返回正常,但我沒有從「select * from wp_comments」中得到第二個表的結果。爲什麼? – Maverick

回答

-1

您的查詢無效。你在INNER JOIN裏面額外選擇了一個新的臨時表。然後你加入這張桌子。該臨時表中的字段不會自動選擇到查詢結果中。您應該指定要選擇的一組字段。因此,您可以直接與wp_comments表聯接,並將此表中的所有字段添加到由c.*設置的結果字段中。所有查詢應該是這樣的:

SELECT w.id, c.* 
FROM wp_users w 
INNER JOIN wp_comments c on c.user_id = w.ID 
    and c.comment_type = 'user_course' 
+0

@Jay Blanchard我已經添加了解釋。 – Evgeny

+0

好吧,那麼爲什麼幾乎相同的查詢在第二個示例中按預期工作? – Maverick

+0

你的意思是第二個例子嗎?如果你的意思是你的例子,由於'*'這意味着「從連接表中選擇所有字段」。如果你談論我的例子,那麼因爲'c。*'這意味着來自表c的所有字段('wp_comments'的別名) – Evgeny