【问题标题】:Rails MySQL subquery countRails MySQL 子查询计数
【发布时间】:2013-01-28 23:44:19
【问题描述】:

我有两个模型:

  1. 产品
  2. 点击

我想获得点击次数超过 x 次的所有产品。

表格如下所示:

Products

id 

,

Clicks

id | product_id

在 ruby​​ 中,代码可能类似于 products.select {|p| p.clicks.size > x}。如何为 mysql 编写类似的查询?

谢谢!

【问题讨论】:

  • 你只是在问如何编写 SQL 来执行这个查询吗?或者你是在问如何在 ActiveRecord/Rails 领域做到这一点?
  • 最后,我将在 Rails ARel 中编写它。所以那将是理想的。

标签: mysql ruby-on-rails count subquery


【解决方案1】:

要有效地执行此操作,您可能需要考虑使用计数器缓存。 ActiveRecord 内置了对这个概念的支持,它可以让您不必执行子查询。

一些链接:

【讨论】:

    【解决方案2】:

    试试这个:

    SELECT *
    FROM Products
    WHERE Id IN
    (
        SELECT 
            P.Id
        FROM Products P
           JOIN Clicks C
              ON P.Id = C.Product_ID
        GROUP BY P.ID
        HAVING COUNT(1) > x
    ) A
    

    或者这个,如果你只需要产品ID

        SELECT 
            P.Id
        FROM Products P
           JOIN Clicks C
              ON P.Id = C.Product_ID
        GROUP BY P.ID
        HAVING COUNT(1) > x
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-20
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多