[英]Query JOIN And Count ON Postgresql
我使用Postgresql。 我有一個這樣的&b桌子
a_table
+--------+---------------+
| id | free_value |
+--------+---------------+
| 1 | 3 |
| 2 | 2 |
| 3 | 1 |
| 4 | 3 |
| 5 | 2 |
| 6 | 8 |
| 7 | 4 |
+--------+---------------+
b_table
+--------+---------------+
| id | a_table_id |
+--------+---------------+
| 1 | 2 |
| 2 | 2 |
| 3 | 6 |
| 4 | 5 |
| 5 | 3 |
| 6 | 3 |
+--------+---------------+
我可以在b_table和desc上寫關於count free_value的查詢來像這樣計數嗎?
count_free_value_table
+----------------+-----------+
| free_value | count |
+----------------+-----------+
| 2 | 3 |
| 1 | 2 |
| 8 | 1 |
| 3 | 0 |
| 4 | 0 |
+----------------+-----------+
我嘗試使用SELECT free_value, count(free_value) from a_table LEFT JOIN b_table ON a_table.id = b_table.a_table_id
但這是行不通的。
感謝您的任何幫助。 我為此感到愚蠢。
嘗試使用COUNT(b_table.id)
代替; COUNT
計算遇到的所有非空值,這就是為什么(我猜)您為不匹配的free_values
得到1; 因為不匹配的值在行中仍具有自己的值。
編輯:此外,are的注釋和Alim的答案也是正確的,因為您需要group by free_value
。 否則,您將獲得JOIN的總行,以及有效地隨機選擇的free_value
。
嘗試
SELECT free_value, count(free_value)
from a_table LEFT JOIN b_table ON a_table.id = b_table.a_table_id
group by free_value
SELECT free_value, count( b_table.id ) count
FROM a_table
LEFT JOIN b_table ON a_table.id = b_table.a_table_id
GROUP BY free_value
ORDER BY count DESC
試試這個查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.