我在數據庫中的以下表:MySQL的左連接查詢 - 讓數據從三個表
表post
:
+---------------+----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+----------------+------+-----+---------+----------------+
| post_id | int(11) | NO | PRI | NULL | auto_increment |
| post_content | varchar(50000) | NO | | NULL | |
| post_date | datetime | NO | | NULL | |
| post_summary | varchar(1000) | YES | | NULL | |
| post_title | varchar(300) | NO | | NULL | |
| post_visitors | int(11) | NO | | NULL | |
| user_id | int(11) | NO | MUL | NULL | |
| category_id | int(11) | NO | MUL | NULL | |
+---------------+----------------+------+-----+---------+----------------+
表user
:
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| user_id | int(11) | NO | PRI | NULL | auto_increment |
| user_image | varchar(500) | YES | | NULL | |
| user_name | varchar(45) | NO | | NULL | |
| user_password | varchar(45) | NO | | NULL | |
| user_type | varchar(30) | NO | | NULL | |
| user_username | varchar(45) | NO | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
表comment
:
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| comment_id | int(11) | NO | PRI | NULL | auto_increment |
| comment_content | varchar(600) | NO | | NULL | |
| comment_date | datetime | NO | | NULL | |
| comment_title | varchar(300) | NO | | NULL | |
| user_id | int(11) | NO | MUL | NULL | |
| post_id | int(11) | NO | MUL | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
我需要一個查詢,將返回post_title
,post_summary
,post_date
,number_of_comments_for_this_post
,user_name
,訂購number_of_comments_for_this_post
(降序)。
基本上我需要所有三個表中的數據。我知道如何將兩個表連接起來並獲取一些數據。例如:
SELECT p.post_title, p.post_summary, p.post_date, u.user_name
FROM post p LEFT JOIN user u ON p.user_id=u.user_id;
如何通過加入第三個表(評論),並添加更多的領域擴展此查詢 - 「帖子的數量意見」下令最先評論的帖子(DESC)?
Padawan,不要使用USING()。在較大的查詢中,它變得太混亂。並沒有性能優勢。 – Strawberry
當然這不是性能上的好處,但它也不是缺點。而其代碼越少,我就會通過閱讀用戶u等表格詞綴,然後u.x = c.y而感到頭痛。我不認爲這是令人困惑的,但這是一個品味問題!大型查詢無論如何都難以閱讀,不管USING()或ON語句如何。使用新行格式化您的查詢將使其可讀性達到一半... – Steini
@Steini您沒有在結果中包含「number_of_posts」註釋字段,並且按字段排序 – Vladimir