我希望用最新的产品价格做一个SQL输出。可以对产品编号多次更新product_price,因此可以创建多个行。我希望消除每一个product_number的一行以上。
SELECT
product_number
,product_price
,MAX(update_timestamp)
FROM product_price
ORDER BY 1,2发布于 2014-01-02 22:10:16
有几种方法可以做到这一点。我喜欢的是子查询。首先获取产品编号,然后是maxtime戳:
SELECT product_number
,MAX(update_timestamp) as maxtimestamp
FROM product_price
group by product_number现在将其转换为子查询,并将其内部连接到第一个表中,以筛选除max以外的所有内容:
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发布于 2014-01-02 22:03:11
如果您只想要更新最多的内容,那么尝试在其中添加一个TOP 1子句,然后删除MAX:按1,2从product_price顺序中选择TOP 1,product_price,update_timestamp
发布于 2014-01-02 22:31:27
尝尝这个
SELECT
product_number
,product_price
,update_timestamp
FROM product_price
ORDER BY update_timestamp DESC LIMIT 1您按update_timestamp订购,然后接受第一个结果。
如果你想得到每一个产品的最新更新时间,那么请使用以下内容
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 ;https://stackoverflow.com/questions/20892689
复制相似问题