SQL查询:获取那些产品大于1的订单

SQL Query: Get those orders that have products greater than 1

psa_psofk是订单号,psa_prdfk是产品号。我只想要那些包含不止一种产品的订单,即我不想要订单 1 和 5。

您可以使用 group byhaving:

select psa_psofk 
from mytable 
group by psa_psofk 
having count(*) > 1

这假设没有重复 (psa_psofk, psa_prdfk)。否则,您需要将 having 子句更改为:

having count(distinct psa_prdfk) > 1

如果你想要整行,那么一个选项使用 exists:

select t.*
from mytable t
where exists (
    select 1 
    from mytable t1 
    where t1.psa_psofk = t.psa_psofk and t1.psa_prdfk <> t.psa_prdfk
)

这里查询 returns 产品大于 1 的订单数量

SELECT * FROM orders o INNER JOIN products p ON o.product_id = p.id 
WHERE o.product_id IN(SELECT o.product_id FROM orders o GROUP BY o.product_id  
HAVING COUNT(o.product_id) > 1)