首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询优化

查询优化
EN

Stack Overflow用户
提问于 2011-04-11 14:49:13
回答 3查看 85关注 0票数 0

我需要最新的4个不同类别的4个产品。此查询不起作用

代码语言:javascript
复制
SELECT 
  ProductID,ProductName,thumb
  FROM 
  tbproduct 
  WHERE 
  status =2 
GROUP BY 
`CATEGORYID` 
ORDER BY 
`ProductID` DESC 
LIMIT 4

因此,我首先使用以下查询按所有records.and排序...

代码语言:javascript
复制
SELECT 
ProductID, ProductName, thumb 
FROM 
  (
  SELECT 
  ProductID,ProductName,thumb,CATEGORYID 
  FROM 
  tbproduct 
  WHERE 
  status =2 
  ORDER BY 
  `ProductID` DESC
  ) AS tmp 
GROUP BY 
`CATEGORYID` 
ORDER BY 
`ProductID` DESC 
LIMIT 4

这个查询很慢,有人能给我提一下它的快速查询吗?我用的是MySQL。

EN

回答 3

Stack Overflow用户

发布于 2011-04-11 14:55:13

如果你只是简单地使用:

代码语言:javascript
复制
SELECT 
  ProductID,ProductName,thumb,CATEGORYID 
  FROM tbproduct 
  WHERE status=2
  GROUP BY CATEGORYID
  ORDER BY ProductID DESC
  LIMIT 4
票数 1
EN

Stack Overflow用户

发布于 2011-04-11 14:54:09

代码语言:javascript
复制
 SELECT 
  Max(ProductID), ProductName,thumb
  FROM 
  tbproduct 
  WHERE 
  status =2 
GROUP BY 
`CATEGORYID` 
ORDER BY 
 ProductID DESC 
LIMIT 4

这不管用吗?

不确定这是否有帮助,请参阅更新后的查询。请参阅Group-by Aggragate的用法。

注意:这不会可靠地返回其他列。请在此处查找left-self-exclusion join

票数 0
EN

Stack Overflow用户

发布于 2011-04-12 03:33:29

代码语言:javascript
复制
SELECT 
ProductID, ProductName, thumb 
FROM tbproduct 
WHERE ProductID in (
  SELECT max(ProductID)
  FROM tbproduct
  WHERE status = 2
  GROUP BY CATEGORYID
  ORDER BY ProductID DESC
  LIMIT 4
) ORDER BY ProductID DESC 

这应该可以了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5617730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档