SQL查询:获取那些产品大于1的订单
SQL Query: Get those orders that have products greater than 1
psa_psofk
是订单号,psa_prdfk
是产品号。我只想要那些包含不止一种产品的订单,即我不想要订单 1 和 5。
您可以使用 group by
和 having
:
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)
psa_psofk
是订单号,psa_prdfk
是产品号。我只想要那些包含不止一种产品的订单,即我不想要订单 1 和 5。
您可以使用 group by
和 having
:
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)