0

我的 SQL 表“offers”包含用户为产品提供的优惠(product_ID、customer_ID、offer)。

在我的管理页面中,我想列出至少存在一个优惠的产品,并显示其现有的总优惠。

例如,

PRODUCT #324     Total offers: 42
PRODUCT #99      Total offers: 1
etc.

我的猜测是 SELECT DISTINCT product_ID FROM offers... 在第二个查询中结合一个 And 来SELECT COUNT(*) FROM offers WHERE product_ID=...

这是实现这一目标的最有效方法,还是有办法在单个查询中实现?

4

2 回答 2

2

您可以在一个查询中执行此操作,该查询将通过以下分组来获取计数product_id

SELECT product_ID, COUNT(*) 
FROM offers 
GROUP BY product_ID
于 2013-05-06T20:21:04.437 回答
1

正如 bluefeet 已经回答的那样,您可以通过使用 group by 在单个查询中实现它。 (按演示分组)

另一件事要提到的是 order by,

select
  product_id as id,
  count(*) as totals
from 
  t
group by product_id
order by totals;

如果您想按点击总数排序,或者您想按 product_id 等排序。

sqlfiddle

于 2013-05-06T21:11:32.180 回答