[英]Count rows that have the same value in mysql and then show item number
我有以下数据,希望能将它们分组。
| Label | Category |
| PC Equipment | Materials |
| PC Equipment | Materials |
| PC Equipment - Install| Installation |
| Table Setup | Materials |
| Table Setup | Materials |
| Table Setup - Install | Installation |
我想将以下内容组合到此输出中:
| Item #| Label | Category |
| | PC Equipment | Materials |
| | PC Equipment | Materials |
| 1 | PC Equipment - Install| Installation |
| | Table Setup | Materials |
| | Table Setup | Materials |
| 2 | Table Setup - Install | Installation |
那有可能吗? 到目前为止,这是我尝试过的
SELECT
@row_number := CASE WHEN Label LIKE "%Install%" THEN @row_number + 1
ELSE ""
END AS row_number,
Label
FROM table1 t,
(SELECT @rownum := 0) r
WHERE deleted = 0
我得到的输出是
| Item #| Label | Category |
| | PC Equipment | Materials |
| | PC Equipment | Materials |
| 1 | PC Equipment - Install| Installation |
| | Table Setup | Materials |
| | Table Setup | Materials |
| 1 | Table Setup - Install | Installation |
第二个数字没有增加。
这是MySQL。 您只需要正确执行变量算术:
SELECT (CASE WHEN Label LIKE '%Install%'
THEN cast(@icnt := @icnt + 1 as char(10))
ELSE ''
END) AS row_number,
Label
FROM table1 t CROSS JOIN
(SELECT @icnt := 0) params
WHERE deleted = 0;
您的方法不起作用的原因是因为您要在每行上重新设置计数器变量。 因此,它从1
到""
,并且空字符串被视为0-因此,在下一次安装时,它将增加到1。依此类推。
尝试这个:
SELECT IF(Label LIKE "%Install%", rn, '') AS 'Item #',
Label, Category
FROM (
SELECT @row_number := CASE
WHEN Label LIKE "%Install%" THEN @row_number + 1
ELSE @row_number
END AS rn,
Label, Category
FROM table1 AS t
(SELECT @row_number := 0) AS r
WHERE deleted = 0
ORDER BY Label) AS t
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.