Mysql 如何在一个组中查找产品,而不是在另一个组中查找产品
我当前有以下SQL查询:Mysql 如何在一个组中查找产品,而不是在另一个组中查找产品,mysql,array-difference,Mysql,Array Difference,我当前有以下SQL查询: SELECT product.name "Product", section.floor "Floor" FROM products JOIN sales ON products.productID = sales.productID JOIN sections ON sales.sectionID = sections.sectionID WHERE sections.floor = 1 // BUT N
SELECT
product.name "Product",
section.floor "Floor"
FROM
products
JOIN
sales
ON
products.productID = sales.productID
JOIN
sections
ON
sales.sectionID = sections.sectionID
WHERE
sections.floor = 1 // BUT NOT ON FLOOR = 2
我的想法是看看哪些产品在一楼销售,而不是在二楼。我设法在第一个网站上销售所有的产品,但是我怎样才能摆脱在第二个网站上也能找到的产品呢
我的想法是让所有的产品都在两层楼销售,然后删除已销售的产品列表,并将其从一层楼的所有产品列表中删除,但我不知道怎么做。首先,您不需要您的分组声明,所以您可以摆脱它 如果要避免使用第二层对象,则应首先选择第一层中的所有产品,然后添加另一个子查询,以过滤出也在第二层销售的产品 看起来是这样的:
SELECT p.name, s.floor
FROM products p
JOIN sales sa ON sa.productid = p.productid
JOIN sections s ON s.sectionid = sa.sectionid
WHERE s.floor = 1
AND p.productid NOT IN(
SELECT p.productid
FROM products p
JOIN sales sa ON sa.productid = p.productid
JOIN sections s ON s.sectionid = sa.sectionid
WHERE s.floor = 2)
考虑上述内容的另一种方式是:为在一楼销售的所有产品提供每个产品名称和楼层,其中productid不是在二楼销售的productid之一。除非您确定自己知道自己在做什么,否则如果您发现自己使用的GROUP BY子句没有聚合功能,很可能你做错了什么!哦,抱歉,删除了它,不知道我为什么在这里键入了该组,我知道聚合功能,真的很抱歉。重新阅读您的问题,我不完全确定您是否希望在1楼或2楼销售产品,但概念保持不变。是的,您答对了,我正在寻找在1楼销售的产品,而不是在2楼销售的产品。我在想,我可以简单地用一个两个连接将其拉出,而不进行另一个子查询:D,但是,似乎我不能。不,我不这么认为。当你像我说的“在一个位置获取项目,但不要在另一个位置获取项目”那样思考它的时候,我的脑海中就会尖叫出子查询。