Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何显示共享同一前缀的不同值的计数?_Mysql_Sql_Select - Fatal编程技术网

Mysql 如何显示共享同一前缀的不同值的计数?

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

我试图计算特定序列发生的次数。将表格中的列-‘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
这给了我一个计数,但没有说明是哪一个。我需要在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一栏