MySQL为每个category_id获取X列

时间:2011-04-12 14:56:43

标签: mysql sql

我不知道这是否可以通过ONE查询在mysql中实现。

假设我的表“产品”有“id”,“category_id”,“product_name”,“price”

案例1:我想从价格超过100美元的每个类别中获取5个产品

案例2:我想要获取

1-“3类产品”

2-“5类产品2”

3-“3类产品,其中价格超过100且未在第2点获取”

一个查询中的每个案例,可能吗?

PS:该表有大约100K行...

3 个答案:

答案 0 :(得分:1)

我发现了这个方法:它非常快,并且给了我我想要的东西:

SELECT  l.*
FROM    (
        SELECT  category,
                COALESCE(
                (
                SELECT  id
                FROM    writings li
                WHERE   li.category= dlo.category 
                ORDER BY
                        li.category, li.id
                LIMIT 15, 1
                ), CAST(0xFFFFFFFF AS DECIMAL)) AS mid
        FROM    (
                SELECT  id as category
                FROM    cats dl 
                ) dlo
        ) lo, writings l
WHERE   l.category>= lo.category
        AND l.category<= lo.category
        AND l.id <= lo.mid

答案 1 :(得分:0)

我认为你可以使用嵌套的select语句来做到这一点。

http://dev.mysql.com/tech-resources/articles/4.1/subqueries.html

虽然,在您收到查询后,我不确定如何将它们用作单独的select语句。我的意思是,他们都将成为一个记录集。

答案 2 :(得分:0)

案例2我想我已经......

  (
  select * from products where category_id = 1 limit 3
  )
union 
  ( 
  select * from products where category_id = 2 limit 5
  )
union (
  select * from products where category_id = 2 and price > 100 limit 3
)

请注意,union将消除重复,union all将允许重复(并且因此更快)。

你看到了吗? mySQL Returning the top 5 of each category

这看起来像你在问什么...