数据库
首页 > 数据库> > 如何在没有聚合和分组的情况下在MySQL中最多找到两项

如何在没有聚合和分组的情况下在MySQL中最多找到两项

作者:互联网

我有一个表格事务(store_id,item_id,价格).我想找到不使用聚合函数和分组最多可以出售两个不同商品的store_id.

有什么办法吗?

解决方法:

有趣的要求…通过聚合函数和分组,这将更快,更轻松..但这是另一种方式:

SELECT DISTINCT t1.store_id
FROM 
    Transactions t1 
    LEFT JOIN Transactions t2 
        ON t1.store_id = t2.store_id 
        AND t1.item_id <> t2.item_id
    LEFT JOIN Transactions t3 
        ON t1.store_id = t3.store_id 
        AND t3.item_id NOT IN (t1.item_id, t2.item_id)
WHERE t3.store_id IS NULL

该查询的工作方式是从一个商店记录连接到同一商店但另一个项目的另一条记录.然后,它尝试加入同一商店但不同项目的第三条记录.如果找到该记录,那么商店将销售两个以上的商品,并且将在WHERE子句中排除.

只是为了给您一个主意,以下是查询通常的外观:

SELECT store_id
FROM Transactions
GROUP BY store_id
HAVING COUNT(DISTINCT item_id) < 3

标签:aggregate-functions,mysql
来源: https://codeday.me/bug/20191201/2081490.html