[英]Group different groups as the same and count?
我有以下查询:
SELECT owner,
typeOwner,
type,
count(*) AS count
FROM myTable
GROUP BY typeOwner
ORDER BY count DESC
LIMIT 0, 30
现在, typeOwner values = '<test>a</test>'
但是,有时typeOwner
字段将包含其他字符串,例如'<test>b</test>
,我如何让该查询计算<test>b</test>
作为一组'<test>a</test>
。
我想为此例外,我的意思是typeOwner <test>a</test>
和typeOwner <test>b</test>
应该被计为具有两个计数的一行。
这是一个小提琴: http ://sqlfiddle.com/#! 2/70053/1 ,看看
实际上,这些应该按<type></type><aId></aId>
“实际上,这些应按”进行分组
您可以按以下相对难看的方式进行分组:
GROUP BY LEFT(typeOwner, position('<xType>' in typeOwner) -1)
但是您最好以某种方式预处理数据。 我不确定MySQL如何处理xml,但是如果需要以任何频率进行此类处理,则在SQL Server中,我可能会将XML值提取到一流关系字段中。
根据您的sqlfiddle,这有效
SELECT
left(typeOwner, instr(typeOwner, '<xType>')-1) as typeOwner,
owner,type, count(*) as count
FROM `test`
GROUP BY left(typeOwner, instr(typeOwner, '<xType>')-1)
ORDER BY count DESC
LIMIT 0 , 30
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.