Php 查询以列出表中出现了多少个字符串?
我有一个字符串数组和一个文本类型为column的表。我想列出表中任何行的指定列中出现了多少个字符串。有没有一种方法可以通过一个查询来实现这一点Php 查询以列出表中出现了多少个字符串?,php,mysql,Php,Mysql,我有一个字符串数组和一个文本类型为column的表。我想列出表中任何行的指定列中出现了多少个字符串。有没有一种方法可以通过一个查询来实现这一点 Example; $strings = array('test', 'sth'); Table; id | someTextColumn ------------------- 1 | abc tests 2 | sthab 3 | teststh 4 | abcd 5 | sth Expected result; str | occur
Example;
$strings = array('test', 'sth');
Table;
id | someTextColumn
-------------------
1 | abc tests
2 | sthab
3 | teststh
4 | abcd
5 | sth
Expected result;
str | occurences
-----------------
test | 2
sth | 3
如果表大小不太大且列已正确索引:
SELECT 'test', COUNT(id)
FROM tableName
WHERE someTextColumn LIKE '%test%'
UNION ALL
SELECT 'sth', COUNT(id)
FROM tableName
WHERE someTextColumn LIKE '%sth%'
$query=“从tableName where中选择someTextColumn,count(id)”
对于($i=0;$i
试试这个,我希望这能解决你的问题 您可以使用一系列类似于的
语句来实现这一点
以下是一个例子:
select totest.str, count(t.id)
from (select 'test' as str union all
select 'sth'
) totest left outer join
t
on t.someTextColumn like concat('%', totest.str, '%')
group by totest.str
如果您的桌子很大,这不会特别快。如果您有较大的表,您可能需要考虑全文索引。表大约有100行,但字符串可能比这多很多。这是一个每周工作一次的查询。如果没有更好的方法,我可以用这个。我需要知道哪个字符串出现了多少次,同一个单元格中可能有两个字符串,所以这对我不起作用。好的。现在我对你的问题有了更好的理解,我将尝试更正另一个关于该要求的查询。你尝试过这个查询吗?它给出了一个数组字符串在你的表中绝对出现的次数。我需要它们分开。看看我的预期结果。代码中的加号应该是点,$value应该是$Strings[$i],并且查询中有一个拼写错误的“from”关键字。对于不太懂php的人来说,这些可能会让人困惑,所以请编辑。除了零发生之外,这是有效的。还有什么方法可以添加它吗?@m_poorUser。是的,您需要一个外部联接(这还需要将count(*)
更改为count(id)
count(totest.id)
应该是count(t.id)
。它可以工作,谢谢。
select totest.str, count(t.id)
from (select 'test' as str union all
select 'sth'
) totest left outer join
t
on t.someTextColumn like concat('%', totest.str, '%')
group by totest.str