我有三個表:如何正確書寫MySQL的子查詢的條件和限制
帖子: ID,標題的AuthorID,文字
作者: ID,姓名,國家
評論: id,authorId,text,postId
我想運行一個mysql命令,它選擇由作者編寫的前5個帖子,其國家是'愛爾蘭'。在同一個電話中,我想檢索這五個帖子的所有評論,以及作者信息。
我已經試過如下:
SELECT posts.id as 'posts.id', posts.title as 'posts.title' (etc. etc. list all fields in three table)
FROM
(SELECT * FROM posts, authors WHERE authors.country = 'ireland' AND authors.id = posts.authorId LIMIT 0, 5) as posts
LEFT JOIN
comments ON comments.postId = posts.id,
authors
WHERE
authors.id = posts.authorId
我必須包括用別名^每場因爲沒有爲ID重複,並在今後更多的領域可能成爲我在尋找重複通用的解決方案。
我的兩個問題是:
1)我正在從我的子查詢的ID內的重複字段項,所以我必須在子查詢中再次列出我的所有字段的別名或有隻有一個我需要一個子選擇
2)有沒有辦法來自動別名我的電話?目前,我只是在主選擇中爲每個字段設置了別名,但是它可以爲我做到這一點,所以沒有重複?
對不起,如果這不是很清楚,這是一個混亂的問題!謝謝。
謝謝!關於第二次不必要的連接,並忘記了命令日期:p在子選擇中,SELECT *不會導致'Mysql錯誤:重複列名'id'',因爲作者和帖子都有一個id? – user1020317 2013-04-30 16:14:50
另外,ID我只在我的子選擇中選擇了posts.id,這是否意味着我只能在主語句中訪問該職位的ID? – user1020317 2013-04-30 16:16:35
@ user1020317。 。 。是。然後你必須回到'authors'表中來獲得這些字段。 – 2013-04-30 16:20:25