我有一个高级查询,其中我想显示列“vq5p1.message
”的唯一值。我怎么能这样做?
我的查询:
SELECT th.hashtag_id,
COUNT(th.hashtag_id) as count_hashtags, vq5p1.message
FROM tweet_hashtag th
JOIN tweet t
ON t.tweet_id = th.tweet_id
JOIN virtualq5p1 vq5p1
ON vq5p1.tweet_id = th.tweet_id
JOIN hashtag_fc fc
ON fc.hashtag_id = vq5p1.hashtag_id
JOIN game g
ON g.fc_id1 = fc.fc_id
OR g.fc_id2 = fc.fc_id
WHERE NOT EXISTS (SELECT 1
FROM virtualq5p1 vq5p2
WHERE vq5p2.hashtag_id = th.hashtag_id
AND vq5p2.tweet_id = th.tweet_id)
AND t.created_time >= g.official_start
AND t.created_time <= g.official_end
GROUP BY th.hashtag_id, vq5p1.message
ORDER BY COUNT(th.hashtag_id) DESC
LIMIT 10;
注意: vq5p1是一个视图。
现在我只得到不正确的重复结果:
答案 0 :(得分:1)
因此,为了获得唯一的消息,我创建了以下视图:
SELECT th.hashtag_id,
COUNT(th.hashtag_id) as count_hashtags, vq5p1.message
FROM tweet_hashtag th
JOIN tweet t
ON t.tweet_id = th.tweet_id
JOIN virtualq5p1 vq5p1
ON vq5p1.tweet_id = th.tweet_id
JOIN hashtag_fc fc
ON fc.hashtag_id = vq5p1.hashtag_id
JOIN game g
ON g.fc_id1 = fc.fc_id
OR g.fc_id2 = fc.fc_id
WHERE NOT EXISTS (SELECT 1
FROM virtualq5p1 vq5p3
WHERE vq5p3.hashtag_id = th.hashtag_id
AND vq5p3.tweet_id = th.tweet_id)
AND t.created_time >= g.official_start
AND t.created_time <= g.official_end
GROUP BY th.hashtag_id, vq5p1.message
ORDER BY COUNT(th.hashtag_id) DESC
LIMIT 10;
然后使用视图中的结果和原始“消息”列所在的表。
select vq5p2.hashtag_id, vq5p2.count_hashtags, ht.message
from hashtag ht
JOIN virtualq5p2 vq5p2
ON vq5p2.hashtag_id = ht.hashtag_id
答案 1 :(得分:0)
也许你想要:
SELECT vq5p1.message, COUNT(*) as count_hashtags
. . .
GROUP BY vq5p1.message
ORDER BY COUNT(*) DESC
这将为每条消息返回一行,并为其分配散列标记的数量(我认为)。