好的,我在查询中内置了一个子查询。但是,如果子查询表(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
我希望item表中的amount列只小于表(shop_stock)中包含该项ID的行,如果它实际上包含行。因为它没有开始的行,所以根本不会从查询中提取任何内容。 但是我循环了一下我想要插入多少项的循环,并且在一开始,它将在该表(shop_stock)中没有任何内容。
如果它从未在该表中插入该ID,则此查询将永远不会运行。所以我很困惑。我想基本上计算项目ID以及它在子查询中发生的程度,如果它甚至在表格中的话。
总的来说,每个项目都有一个金额(2-30),这意味着ITEM ID 21可能有5个意义,我只想要5个项目的MAX来补充该项目。所以我试图不做两个查询,我必须选择一个项目,然后检查它是否已经在shop_stock表中5次,如果不是,请将该项目插入shop_stock。
答案 0 :(得分:0)
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