如何只获得一个不同的行?

时间:2011-06-30 18:42:26

标签: mysql sql

我正在制作简讯php模块,其中包含队列列表(因此我的cron文件可以按分钟向其发送特定数量的电子邮件),我想如果时事通讯有关于队列的电子邮件和多少电子邮件,那么为了节省处理时间,如果有电子邮件要发送,我不想获取每个时事通讯并逐字段去。

所以,想象一下 NEWSLETTER_QUEUE 表中的这个结构:

NEWSLETTER_ID   EMAIL
1           test1@hotmail.com
1           test2@hotmail.com
1           test3@hotmail.com
1           test4@hotmail.com
2           test2@hotmail.com
2           test3@hotmail.com
2           test4@hotmail.com
3           test4@hotmail.com

我只想获得价值观:

NEWSLETTER_ID   COUNT(EMAIL)
1               4
2               3
3               1

所以,通常我会通过时事通讯查询时事通讯并检查它是否发送待处理和计数,但我不想节省处理时间。

3 个答案:

答案 0 :(得分:4)

SELECT newsletter_id, COUNT(email)
FROM newsletter_queue 
GROUP BY newsletter_id

答案 1 :(得分:2)

您想使用GROUP BY。

SELECT NEWSLETTER_ID,COUNT(EMAIL) FROM NEWSLETTER_QUEUE GROUP BY NEWSLETTER_ID 

http://www.w3schools.com/sql/sql_groupby.asp

答案 2 :(得分:1)

一个简单的小组应该这样做吗?

select
  NEWSLETTER_ID,
  COUNT(1) as [COUNT(EMAIL)]
from
  NEWSLETTER_QUEUE 
group by
  NEWSLETTER_ID