[英]mysql select to fetch rows grouped by columns in the same result row
表格1:
bookid type
1 A
2 B
3 A
表2
recordid bookid
1 1
1 2
1 3
有沒有辦法獲得輸出
recordid count(A) count(B)
1 2 1
我嘗試通過左連接兩個表進行分組,但是這樣的輸出如下:
recordid type count
1 A 2
1 B 1
請提出獲取所需輸出的最佳方法。
您可以嘗試以下方法:
SELECT
t2.recordid,
count(CASE WHEN t1.type='A' THEN 1 ELSE NULL END) as CountA,
count(CASE WHEN t1.type='B' THEN 1 ELSE NULL END) as CountB,
FROM Table1 t1
INNER JOIN Table2 t2 on t1.bookid=t2.bookid
GROUP BY t2.recordid
您還可以將SUM()
與expression一起使用,將sum與expression一起使用將導致布爾值1和0,並且您可以根據條件獲取計數
SELECT
t2.recordid,
SUM( t1.type='A') `CountA`,
SUM( t1.type='B') `CountB`,
FROM Table1 t1
JOIN Table2 t2 USING(bookid)
GROUP BY t2.recordid
如果您具有限制列類型的值,我認為很容易做到。 但是如果您有那么多的列類型值,似乎只有一種方法是用游標程序來做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.