我有两张桌子 - 1. Feed 2.卖家
Feed表就像这样
seller_id item_id end_date
========= ======= =========
1 1 2017-02-12[A future date]
1 2 2017-03-12[A future date]
1 3 2017-01-12[A past date]
2 12 2017-02-12[A future date]
3 123 2017-01-10[A past date]
卖方表就像这样
seller_id
=========
1
2
3
我喜欢得到这样的结果,其中end_date大于或等于当前日期,每个seller_id我只需要一个item_id -
seller_id item_id
========= =======
1 1 or 2
2 12
我的SQL查询就像 -
SELECT S.seller_id, R.item_id FROM Feed F, Seller S WHERE S.seller_id=F.seller_id AND F.end_date>=CURDATE() GROUP BY S.seller_id LIMIT 1;
答案 0 :(得分:1)
检查一下..
SELECT S.seller_id, MAX(R.item_id) AS item_id FROM Feed F, Seller S WHERE S.seller_id=F.seller_id AND F.end_date>=CURDATE() GROUP BY S.seller_id;
答案 1 :(得分:1)
您可以使用min()
或max()
,甚至any_value()
汇总函数和group by
子句为每个卖家选择item_id
:
SELECT S.seller_id, max(R.item_id)
FROM Feed F
INNER JOIN Seller S on S.seller_id=F.seller_id
WHERE F.end_date>=CURDATE()
GROUP BY S.seller_id
这取决于您使用的功能的确切业务要求。
答案 2 :(得分:1)
您只需要表Feed,在选择enddate大于当前日期的项目后,您将按id_seller进行分组。然后通过您选择的某个聚合函数选择唯一的item_id(此处为max())。以下是您的请求的例子:
SELECT
F.seller_id,
max(F.itemid)
FROM
Feed F
WHERE
F.end_date > CURRENT_DATE
GROUP BY
F.seller_id