Mysql
COUNT 行,其父 ID 等於我們在一個查詢中的父 ID 為 0 的行
我想使用 MySQL 在一個查詢中執行以下操作:
- 抓取 parent_id 為 0 的行
- 獲取我們抓取的 parent_id 為 0 的行的 parent_id 的所有行的計數
如何在一個查詢中完成此操作?如果您需要更多資訊,請告訴我,我很樂意盡我所能提供幫助。我不是創建問題的專家,所以請告訴我您還需要什麼資訊。
這是我現在正在做的一個例子:
select id from messages where parent_id=0
然後
select count(id) from messages where parent_id={{previously_chosen_id}}
如何獲得一次性查詢?就像是…
select id, count(records where parent_id=the id we just asked for)
**或者,有沒有更好的方法來處理這個問題?**你看,目前我必須執行大量查詢才能找到計數,而我寧願一次性完成。
這很容易通過內聯子查詢實現:
select m.id, (select count(*) from messages where parent_id= m.id ) as ChildCount from messages m where m.parent_id = 0
請注意,不需要
group by
,因為使用了子查詢。
此查詢將為您提供所需的輸出:
SELECT parent.id , COUNT(child.id) AS child_count FROM messages parent INNER JOIN messages child ON child.parent_id = parent.id WHERE parent.parent_id = 0 GROUP BY parent.id;
您可以在 SQL Fiddle 上查看此程式碼的執行情況。
我在我的解決方案中使用了連接,而德魯津在他的解決方案中使用了相關子查詢。嘗試兩者,看看哪個在您的環境中執行得更快。MySQL 可能會將它們減少到相同的計劃。