MySQL Query从另一个表

时间:2017-01-30 15:00:52

标签: mysql

我有两张桌子 - 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;

3 个答案:

答案 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
相关问题