Re: [SQL ] 不同表格 統計
問題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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章