【问题标题】:selecting with multiple where conditions and multiple order clauses from two tables从两个表中选择多个 where 条件和多个 order 子句
【发布时间】: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


【解决方案1】:
SELECT  p.*
FROM    posts p
        INNER JOIN
        (
            SELECT  a.ID
            FROM    posts a
                    INNER JOIN post_tags b
                        ON a.ID = b.post_ID
            WHERE   a.post LIKE '%mmmm%' AND
                    b.tagname IN ('#test','#iseeyou')
            GROUP   BY ID
            HAVING  COUNT(DISTINCT b.tagname) = 2
        ) sub ON p.ID = sub.ID
ORDER   BY p.upvotes DESC, p.unix_timestamp DESC

【讨论】:

  • 另外,你能否解释一下这里的逻辑,如果可能的话,我错在哪里,这样我以后就不会犯同样的错误了。
  • 我用子查询包装你的代码的原因是因为没有子查询,它只会为每个组返回一个ID,因为你已经应用了组。连接子查询的外部查询将允许您选择表 post 上的所有列,其中 post.ID 等于 ID 投影在子查询上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-29
  • 2018-06-10
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多