簡體   English   中英

MySQL查詢從另一個表中獲取單個項目

[英]MySQL Query to get individual item from another table

我有兩個表-1. Feed 2. Seller

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;

檢查一下..

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;

您可以將min()max()甚至any_value()聚合函數與group by子句一起使用, item_id每個賣方選擇一個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

這取決於您要使用的功能的確切業務要求。

您只需要表Feed,在選擇結束日期大於當前日期的項目后,將按id_seller分組。 然后通過您選擇的某些聚合函數(此處為max())選擇唯一的item_id。 這是您要求的一個例子:

SELECT
    F.seller_id,
    max(F.itemid)
FROM
    Feed F
WHERE
    F.end_date > CURRENT_DATE

GROUP BY
    F.seller_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM