好的,所以我在查询中内置了一个子查询。但我希望只有在子查询表(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
我希望项目表中的金额列仅小于表 (shop_stock) 中具有该项目 ID 的行,如果它实际上包含行。因为因为它没有行开头,所以它甚至根本不会从查询中提取任何内容。但是我正在循环循环我想要插入多少项目,并且在一开始,该表(shop_stock)中将没有任何内容。
如果它从不将该 ID 插入到该表中,则该查询将永远不会运行。所以我很困惑。我想基本上计算项目 ID 以及它在子查询中出现的次数(如果它甚至在表中)。
所以总的来说,每个项目都有一个数量 (2-30),这意味着项目 ID 21 的数量可能是 5 意思是我只希望最多 5 个项目来补充该项目。所以我试图不进行两次查询,我必须选择一个项目,然后检查它是否已经在 shop_stock 表中 5 次,如果不是,将项目插入到 shop_stock 中。