StackOverflow中的第一个问题,所以请温柔地对待我。
我有一个mySQL表,其中包含大约14000行,其中包含Twitter上不同用户的推文。它包含列:
......以及其他信息,与此问题无关。
我想知道哪个用户写了一个不同的词(例如"大众")。也就是说:谁在给定的文本字符串上发了最多的推文?
我发现我需要以某种方式执行COUNT()
和SELECT DISTINCT
,但无论我如何放置代码,都会出现SQL错误。我希望有人可以帮助我:)。
答案 0 :(得分:1)
您可以使用WHERE tweet_text LIKE '%volkswagen%'
来过滤使用volkswagen
的推文:
SELECT user_id, COUNT(*) AS `count`
FROM your_table
WHERE tweet_text LIKE '%volkswagen%'
GROUP BY user_id
ORDER BY `count` DESC
LIMIT 1; -- this will be nondeterministic if 2 users has the same number
的 SqlFiddleDemo
强>
为了获得更好的性能,您应该考虑使用全文索引。
CREATE TABLE your_table(
username VARCHAR(100),
user_id INT,
tweet_text VARCHAR(140)
-- ...
);
CREATE FULLTEXT INDEX idx ON your_table(tweet_text) ;
SELECT user_id, COUNT(*) AS `count`
FROM your_table
WHERE MATCH(tweet_text) AGAINST('volkswagen')
GROUP BY user_id
ORDER BY `count` DESC
LIMIT 1;
的 SqlFiddleDemo2
强>