1

我们有一个具有以下模式的 mysql 表

item varchar(20)
count int 

我们有一个图表,将项目分类(item1 和 item2 属于 cat1 和 item3,item4 属于 cat4,但它不在表中,我们无法创建表。

我想要 cat1 和 cat2 中存在的项目数。这可以在不加入任何表和内部查询的情况下完成吗?

4

2 回答 2

1

你可以这样做:

SELECT 
  c.categoryname, 
  SUM(IFNULL(i.`count`,0))
FROM 
(
   SELECT 'item1' itemname, 'cat1' CategoryName
   UNION ALL
   SELECT 'item2' , 'cat1'
   UNION ALL
   SELECT 'item3' , 'cat2'
   UNION ALL
   ...
) c
LEFT JOIN items i ON c.itemname = i.item
GROUP BY c.categoryname

SQL 小提琴演示

于 2012-11-19T08:09:28.630 回答
1
SELECT  'Cat1', sum(table1.count) FROM Table1 WHERE item IN ('Item1','Item2') UNION SELECT 'Cat2', sum(table1.count) FROM Table1 WHERE item IN ('Item3','Item4');
于 2012-11-19T08:10:32.880 回答