Ich habe folgendes „Tweets“ Tabelle:Suchen forrecords in einer Datenbank, die eine bestimmte Zeichenfolge enthält
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!
ich zählen mag, für jeden Benutzer, die Anzahl der Tweets, die {TAG}
mindestens einmal enthält. Das Tag könnte irgendwo im Tweet sein: am Anfang, in der Mitte oder am Ende (gelesen: nicht gefolgt von einem Leerzeichen oder irgendetwas). Die Tabelle hat Millionen von Datensätzen, daher suche ich nach einer effizienten Möglichkeit, dies zu tun. Mein erster Versuch
SELECT COUNT(tweet_id) FROM tweets WHERE `text` LIKE '%{TAG}%' AND user_id = 2
war aber die 0 zurück, während in diesem Beispiel wurde erwartet, 2. Also zwei Fragen zurück: (i), was mache ich falsch und (ii) ist es eine effizientere Art und Weise um dies zu tun?
[EDIT]
Ich mag würde das Ergebnis in die „Benutzer“ Tabelle einfügen:
user_id tweets_with_tag
2 2
3 0
4 9
Ist es möglich, in derselben Abfrage zählen und einfügen?
Wie oft möchten Sie solche Werte in die Tabelle "users" einfügen? Vielleicht möchten Sie [View] (http://dev.mysql.com/doc/refman/5.0/en/create-view.html) anstelle der regulären Tabelle verwenden? – mkk
Ich habe etwa 100.000 Benutzer und ein paar Millionen Tweets. Ich muss das nur einmal tun - es ist für Forschungszwecke auf einem statischen Datensatz, anstatt für eine Live-Anwendung. – Pr0no