Mysql 如何显示共享同一前缀的不同值的计数?
我试图计算特定序列发生的次数。将表格中的列-‘testC’-‘testT’作为字符,如‘DS-PP’、‘WQ-PP’、‘FF-PP’、‘DS-PP’、‘DS-PP’、‘FF-PP’等 我希望结果是这样的Mysql 如何显示共享同一前缀的不同值的计数?,mysql,sql,select,Mysql,Sql,Select,我试图计算特定序列发生的次数。将表格中的列-‘testC’-‘testT’作为字符,如‘DS-PP’、‘WQ-PP’、‘FF-PP’、‘DS-PP’、‘DS-PP’、‘FF-PP’等 我希望结果是这样的 DS-PP - 3 FF-PP - 2 WQ-PP - 1 我怎样才能做到这一点。到目前为止,我有 SELECT count(testC) from testT where testC like '%-PP%' group by testC 这给了我一个计数,但没有说明是哪一个。我需要在se
DS-PP - 3
FF-PP - 2
WQ-PP - 1
我怎样才能做到这一点。到目前为止,我有
SELECT count(testC) from testT where testC like '%-PP%' group by testC
这给了我一个计数,但没有说明是哪一个。我需要在select中添加一些内容来获取DS-PP等等
注意:testC列可以有任何内容(它是一个文本字段),比如-‘DP-PP在这里’,我希望它只显示DP-PP,而不是整个句子
检查这个
您没有错过
WHERE testC
子句吗?您也没有选择testC
SELECT testC, count(testC) from testT WHERE testC like '%-PP%' group by testC
对于您的第二个建议。您可以先找到-PP,然后像这样删除字符:
select substr(TestC, locate('-pp', TestC) - 2, 5) as testc, count(*)
from testT
where locate('-pp', TestC) > 2
group by substr(TestC, locate('-pp', TestC) - 2, 5)
您没有错过
WHERE testC
子句吗?您也没有选择testC
SELECT testC, count(testC) from testT WHERE testC like '%-PP%' group by testC
对于您的第二个建议。您可以先找到-PP,然后像这样删除字符:
select substr(TestC, locate('-pp', TestC) - 2, 5) as testc, count(*)
from testT
where locate('-pp', TestC) > 2
group by substr(TestC, locate('-pp', TestC) - 2, 5)
您需要在
选择中添加TestC
:
SELECT TestC, count(testC)
from testT
where testC like '%-PP%'
group by testC
编辑:
这绝对是一个更合理的问题
select substr(TestC, locate('-pp', TestC) - 2, 5), count(*)
from testT
where locate('-pp', TestC) > 2
group by substr(TestC, locate('-pp', TestC) - 2, 5)
这假设您希望这两个字符位于'-pp'
之前。它过滤掉'-pp'
从第一个或第二个字符开始的任何行。您需要在选择中添加TestC
:
SELECT TestC, count(testC)
from testT
where testC like '%-PP%'
group by testC
编辑:
这绝对是一个更合理的问题
select substr(TestC, locate('-pp', TestC) - 2, 5), count(*)
from testT
where locate('-pp', TestC) > 2
group by substr(TestC, locate('-pp', TestC) - 2, 5)
这假设您希望这两个字符位于'-pp'
之前。它会过滤掉'-pp'
从第一个或第二个字符开始的任何行。该sql如何工作?where子句中的类似条件中没有提到列?请继续询问真正的问题并使用适当的标记。我已经做了一些编辑,但它们不能清晰地显示整个故事。包括实际数据和当前查询输出-这应该包括示例数据,如DP-PP was here
,这些数据在底部非常小的注释中丢失。无论如何,我的建议是(如果修复模式以删除去规范化不是一个选项)在为计数选择之前,将使用嵌套查询并在testC上使用。这可能会对索引的使用产生负面影响。如果使用SUBSTR/INSTR(INSTR可以找到-PP
)的索引不符合要求的规则,那么您的架构就相当麻烦了——如果由于它将导致可怕的计划而覆盖了许多行,那么无论如何都可能如此。在这种情况下,我真的希望修复模型以适应需求。谢谢,我知道我必须对其进行重组,但在我重做之前,我希望现在能有一个快速的解决方案。sql是如何工作的?where子句中的类似条件中没有提到任何列?请继续问真正的问题并使用适当的标记。我已经做了一些编辑,但它们不能清晰地显示整个故事。包括实际数据和当前查询输出-这应该包括示例数据,如DP-PP was here
,这些数据在底部非常小的注释中丢失。无论如何,我的建议是(如果修复模式以删除去规范化不是一个选项)在为计数选择之前,将使用嵌套查询并在testC上使用。这可能会对索引的使用产生负面影响。如果使用SUBSTR/INSTR(INSTR可以找到-PP
)的索引不符合要求的规则,那么您的架构就相当麻烦了——如果由于它将导致可怕的计划而覆盖了许多行,那么无论如何都可能如此。在这种情况下,我真的希望修正模型以适应需求。谢谢,我知道我必须对其进行重组,但我希望现在能有一个快速的解决方案,直到我重做它。对不起,我问这个问题时错过了where,你也错过了where一栏,对不起,我问这个问题时错过了where一栏,你也错过了where一栏