Mysql 仅当子查询包含行时

Mysql 仅当子查询包含行时,mysql,Mysql,好的,我在查询中内置了一个子查询。但我希望只有在子查询表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 = ?) OR

好的,我在查询中内置了一个子查询。但我希望只有在子查询表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列仅小于具有该item ID的shop_stock表中的行(如果它实际上包含行)。因为它没有行开始,所以它甚至不会从查询中提取任何内容。 但是我在循环我想插入多少个项目,在一开始,它在表中没有任何库存

如果它从未将该ID插入该表,则该查询将永远不会运行。所以我很困惑。我想基本上计算项ID以及它在子查询中出现的次数(如果它在表中)


因此,总的来说,每个项目的数量为2-30,这意味着项目ID 21的数量可能为5,这意味着我最多只需要5个项目来重新进货该项目。因此,我尝试不进行两次查询,即我必须选择一个项目,然后检查它是否已经在商店库存表中5次,如果没有,则将该项目插入商店库存。

好的。。标志只是放错了方向。如果金额>子查询表中已有的内容,则插入。。不少于……:/对不起

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

请你把这个问题再澄清一点好吗?尝试用您正在谈论的表名称替换所有表部分。更好的是;对于您提到的每一列,请使用表单。e、 g.项目.金额