簡體   English   中英

僅當子查詢包含行時

[英]Subquery only if it contains rows

好的,我在查詢中內置了一個子查詢。 但是我只想在子查詢表(shop_stock)實際上有行的情況下發生這種情況。

SELECT id
FROM item
WHERE restocks_at = ?
AND rarity > ?
AND rarity < ?
AND price > 0
AND amount < (SELECT COUNT(id)
   FROM shop_stock
   WHERE item_id = item.id
   AND shop_id = ?)
ORDER BY rand()
LIMIT 1

我希望項目表中的金額列僅小於具有該項目ID的表(shop_stock)中的行,前提是它實際上確實包含行。 因為既然沒有開始的行,它甚至根本不會從查詢中提取任何內容。 但是我要遍歷要插入多少個項目的循環,並且從一開始就在該表(shop_stock)中什么都沒有。

如果它從不將該ID插入該表,則該查詢將永遠不會運行。 所以我很困惑。 我想從根本上計算項目ID以及即使在表中也是如此在子查詢中發生的次數。

因此,總的來說,每件商品都有一個數量(2-30),這意味着ITEM ID 21可能有5個意向,我只希望最多5件商品來補充該商品。 因此,我嘗試不做兩個查詢來選擇要選擇的項目,然后檢查它是否已經在shop_stock表中5次,如果不是,請將該項目插入shop_stock。

好的,老實說,哇。 如果數量>子查詢表中已經存在的數量,然后插入..不小於...:/對不起。

SELECT id
FROM item
WHERE restocks_at = 1
AND rarity > 5
AND rarity < 60
AND price > 0
AND amount > (SELECT COUNT(id)
    FROM shop_stock
    WHERE item_id = item.id
    AND shop_id = 1)
ORDER BY rand()
LIMIT 1

暫無
暫無

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

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