所以我有一个小问题。我有2个表,一个包含商家信息,名称等,另一个包含事件。
我每隔几天就会将价格上传到事件表中,因此只有通过TIMESTAMP列(Uploaddate)区分了大量重复内容。
我需要选择最近上传的价格,因此不需要选择其他价格。
Event name date price merchant test 2012-02-26 £10 ShopX test 2012-02-26 £11 ShopY test 2012-02-26 £9 ShopX - LATEST PRICE
IE。选择最新的价格并确保每个商家都是唯一的,因此每个商家只需1个价格。
这是我到目前为止所做的:
SELECT *
FROM wp_events, wp_merchants
WHERE DATE = '2012-02-26'
AND eventname = 'testevent'
AND `uploaddate` > NOW( )
AND wp_events.merchant = wp_merchants.merchant_name
ORDER BY uploaddate DESC
答案 0 :(得分:0)
在子查询中使用MAX()
,如下所示:
SELECT
MAX(DATE), event, merchant
FROM
someTable
GROUP BY
event, merchant
接下来,将子查询合并到主查询中以获取最新价格(我想这就是您想要的):
SELECT
someTable.price, someTable.event, someTable.merchant
FROM
someTable INNER JOIN (
SELECT
MAX(DATE) AS DATE, event, merchant
FROM
someTable
GROUP BY
event, merchant
) subquery
ON someTable.DATE = subquery.DATE AND someTable.event = subquery.event AND someTable.merchant = subquery.merchant
我还没有验证代码。
答案 1 :(得分:0)
尝试一下:
select e1.merchant, e1.price from event e1
left join event e2
on (e1.merchant = e2.merchant and e1.date < e2.date)
where e2.merchant is null
这会得到这个结果:
+----------+-------+
| MERCHANT | PRICE |
+----------+-------+
| ShopY | £11 |
| ShopX | £9 |
+----------+-------+
因此,您必须添加所需的连接和过滤器。
修改强>
这不是你要找的吗?
select e1.merchant, e1.price from wp_events e1
left join wp_events e2
on (e1.merchant = e2.merchant and e1.uploaddate < e2.uploaddate)
where e2.merchant is null