【发布时间】:2013-03-20 06:44:17
【问题描述】:
第一个表:帖子
ID post unix_timestamp upvotes
-----------------------------------
118 mmmm 1360662045 4
119 kdkdk 1360662074 2
120 dkcjf 1360662012 3
121 dkcmv 1360662025 1
和其他一些领域
第二个表:post_tags
ID post_id tagname
-----------------------
1 118 #test
2 118 #iseeyou
3 119 #sleepy
我运行的 MYSQL 查询。
SELECT p.id, p.post, p.timestampfull FROM posts p,
post_tags pt WHERE pt.tagname IN ('#test','#iseeyou')
AND p.post LIKE '%united states%'
AND p.id = pt.post_id
GROUP BY p.id
HAVING COUNT( pt.tagname ) = 2
ORDER BY p.upvotes DESC , p.unix_timestamp DESC
在我的搜索应用程序中,我试图获取最近的行,这就是为什么 p.unix_timestamp 也根据搜索查询按降序排列,其中可以包含哈希标签或纯文本或两者。
因此,如果用户搜索#test #iseeyou united states,它应该返回包含标签以及按时间戳和upvotes 排序的美国文本的帖子。
另外,我希望获得更高票数的帖子优先于最新的帖子。
请告知我的查询是否正确?
【问题讨论】:
-
您有样本记录。并且你有查询,当你在服务器上执行它时,你得到了你想要的结果吗?
-
我什么也没得到。这是一个空的结果集。另外,MYSQL 也没有报错。
-
@JW 嘿,很抱歉再次打扰您,但我只是在我的数据库上运行此查询,它不断给我一个空结果
-
您正在执行什么查询?你能把它和你的问题一起发布吗?也许您的查询中缺少某些内容..
-
不,我使用的查询与您发布的完全相同。我注意到的一件事是,我的 DB 中有 upvotes 和 unix_timestamp 列作为 varchar 类型,就像在您的演示中一样,它的 INT。会影响结果吗?
标签: mysql sql sql-order-by where-clause