列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; の場合。現在返されているのは 1 つだけです。
代わりにそれらすべてを持ちたいと思います。連結/グループ連結が役立つかもしれないと考えましたが、見つかった単語ごとに行を作成する方法がよくわかりません。
アドバイスをいただければ幸いです。
編集: 提供されているすべてのソリューションは見栄えがよく、すべてを試して、どれが最高のパフォーマンスを発揮するかを確認する必要があります。私の現在のクエリは、すでに必要以上に時間がかかっています。結果が少し返ってきます
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
助けてくれてありがとう!