簡體   English   中英

mysql選擇獲取同一結果行中按列分組的行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM