首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图消除重复行SQL查询

问试图消除重复行SQL查询
EN

Stack Overflow用户
提问于 2014-01-02 21:58:14
回答 3查看 63关注 0票数 0

我希望用最新的产品价格做一个SQL输出。可以对产品编号多次更新product_price,因此可以创建多个行。我希望消除每一个product_number的一行以上。

代码语言:javascript
复制
 SELECT
 product_number
 ,product_price
 ,MAX(update_timestamp)
 FROM product_price
 ORDER BY 1,2
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-02 22:10:16

有几种方法可以做到这一点。我喜欢的是子查询。首先获取产品编号,然后是maxtime戳:

代码语言:javascript
复制
SELECT product_number
 ,MAX(update_timestamp) as maxtimestamp
 FROM product_price
group by product_number

现在将其转换为子查询,并将其内部连接到第一个表中,以筛选除max以外的所有内容:

代码语言:javascript
复制
select a.product_number, a.maxtimestamp, b.product_price
from    ( SELECT product_number ,MAX(update_timestamp) as maxtimestamp
FROM product_price
group by product_number) a
inner join product_price b on a.product_number = b.product_number 
    and a.maxtimestamp =   b.update_timestamp
票数 1
EN

Stack Overflow用户

发布于 2014-01-02 22:03:11

如果您只想要更新最多的内容,那么尝试在其中添加一个TOP 1子句,然后删除MAX:按1,2从product_price顺序中选择TOP 1,product_price,update_timestamp

票数 0
EN

Stack Overflow用户

发布于 2014-01-02 22:31:27

尝尝这个

代码语言:javascript
复制
  SELECT
  product_number
  ,product_price
  ,update_timestamp
 FROM product_price
 ORDER BY update_timestamp DESC LIMIT 1

您按update_timestamp订购,然后接受第一个结果。

如果你想得到每一个产品的最新更新时间,那么请使用以下内容

代码语言:javascript
复制
 SELECT 
p.*
FROM
    product_price p
INNER JOIN
    ( SELECT 
          product_number, MAX(update_timestamp) AS latest
      FROM
          product_price
      GROUP BY 
          product_number
    ) AS groupedp
  ON  groupedp.product_number = p.product_number
  AND groupedp.latest = p.update_timestamp ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20892689

复制
相关文章

相似问题

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