Re: [SQL ] 不同表格 統計

看板Database (資料庫)作者 (可愛小孩子)時間6年前 (2018/04/27 19:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
問題2: SELECT user.account, count(post.id) AS post_num FROM user, post WHERE user.id = post.user_id AND post.post_time = '2018-04-27' GROUP BY post.user_id,user.data_order ORDER BY user.data_order 註: order by user.data_order ←需在 group by 同時也加上 user.data_order 問題3: SELECT user.account, count(post.id) AS post_num FROM user LEFT JOIN post on user.id = post.user_id where post.post_time = '2018-04-27' GROUP BY post.user_id,user.data_order ORDER BY user.data_order 上面這樣寫,結果會等價於問題 2 的解法 但如果改成以下寫法(注意黃色部份): SELECT user.account, count(post.id) AS post_num FROM user LEFT JOIN post on user.id = post.user_id and post.post_time = '2018-04-27' GROUP BY post.user_id,user.data_order ORDER BY user.data_order 結果不一定會一樣唷! 所以用 LEFT JOIN 的時候,要很清楚知道自己想要的是什麼唷! 對了,LEFT JOIN 效能不會比較好唷! ※ 引述《lazior (懶人)》之銘言: : 資料庫名稱:mysql : 資料庫版本: : 內容/問題描述: : 有兩個表格,一個是user, 一個是post : user: : id account data_order : 1 AAA 2 : 2 BBB 1 : 3 CCC 3 : post: : id user_id content post_time(2018-XX-XX) : 1 1 ... 2018-04-25 : 2 2 ... 2018-04-25 : 3 3 ... 2018-04-27 : 4 1 ... 2018-04-27 : 5 2 ... 2018-04-27 : 6 1 ... 2018-04-27 : 7 3 ... 2018-04-27 : 想要統計某一天(2018-04-27)使用者的留言數量,並依照user的data_order排序 : 希望結果如下 : account post_num : BBB 1 : AAA 2 : CCC 2 : 有幾個疑問 : 1.效能是寫在一句sql語法比較好,還是先依據data_order排序後,再各別統計比較好? : 2.如果是寫在一句sql寫法這樣對嗎? : SELECT user.account, count(post.id) AS post_num : FROM user, post : WHERE user.id = post.user_id AND post.post_time = '2018-04-27' : GROUP BY post.user_id : ORDER BY user.data_order : 3.用 LEFT JOIN 的話效能會比較好嗎?還是其實都差不多? : SELECT user.account, count(post.id) AS post_num : FROM user : LEFT JOIN user ON post.user_id = user.id : WHERE post.post_time = '2018-04-27' : ORDER BY user.data_order : 先感謝各位大神了!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.168.27.193 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1524827868.A.DEA.html
文章代碼(AID): #1QumRStg (Database)
討論串 (同標題文章)
文章代碼(AID): #1QumRStg (Database)