我正在搜索包含列 ID、消息的消息表中的特定单词
我目前正在使用表格的案例
select message_table.id,
case
when message_table.message like "%word1%" then 'word1'
when message_table.message like "%word2%" then 'word2'
when message_table.message like "%word3%" then 'word3'
end as Filter
from message_table where Filter is not null
如果 Message 列中的一行具有值 ;word1,word2,word3; 目前只返回一个。
我想拥有它们。认为 concat/group concat 可能会有所帮助,但不太确定如何为找到的每个单词生成一行。
将不胜感激任何建议!
编辑:提供的所有解决方案看起来都不错,必须全部尝试,看看哪个具有最佳性能。我当前的查询已经比我想要的要长,稍后会返回结果
Edit2:明智的获胜者速度是(甚至比我上面的情况还要快)。
select id, group_concat(word)
from
(
select id, 'word1' as Word from message_table where message like "%word1%" union
select id, 'word2' from message_table where message like "%word2%" union
select id, 'word3' from message_table where message like "%word3%"
) alias
group by 1
谢谢大家的帮助!