0

好的,所以我在查询中内置了一个子查询。但我希望只有在子查询表(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 中。

4

1 回答 1

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
于 2013-03-15T17:24:05.730 回答