У меня есть следующие «твиты» стол:Глядя forrecords в базе данных, которые содержат определенную строку
tweet_id user_id text
---------------------------------------------------
1 2 this is a tweet with (TAG} in it
2 2 tweet without a TAG
3 2 {TAG} another {TAG} tweet
4 4 look at my {TAG} and weep!
Я хочу, чтобы подсчитать, для каждого пользователя, количество твитов, которое содержит {TAG}
по крайней мере один раз. Тег может быть где угодно в твиттере: в начале, в середине или в конце (читай: не следует пробел или что-то еще). В таблице есть миллионы записей, поэтому я ищу эффективный способ сделать это. Моя первая попытка была
SELECT COUNT(tweet_id) FROM tweets WHERE `text` LIKE '%{TAG}%' AND user_id = 2
но это возвращает 0, а, в данном примере, он должен был вернуться 2. Так два вопроса: (I), что я делаю неправильно, и (б) есть более эффективный способ сделать это?
[EDIT]
Я хотел бы, чтобы вставить результат в таблицу «пользователи»:
user_id tweets_with_tag
2 2
3 0
4 9
Можно ли рассчитывать и вставлять в одном запросе?
Как часто вы хотели бы вставлять такие значения в таблицу «users»? Возможно, вы хотите использовать [View] (http://dev.mysql.com/doc/refman/5.0/en/create-view.html) вместо обычной таблицы? – mkk
У меня около 100 000 пользователей и несколько миллионов твитов. Я только должен сделать это один раз - это для исследовательских целей статический набор данных, а не что-то для живого приложения. – Pr0no