从mysql中提取数据并在查询中计数/分组

时间:2014-10-13 19:01:36

标签: mysql

我需要一些帮助从mysql中的表中提取一些数据。我有几种方法可以做到这一点很长而且效率不高但我知道有一种更清洁的方法。我有一个表,称之为书籍,有一个memberid字段和一个状态字段。状态字段可以是0,1,2,3。我需要通过memberid拉出所有行(这是针对特定成员,而不是所有成员,因此我将向其发送一个memberid)并获得所提供的该memberid的每个状态。我知道这不起作用,但这是我正常尝试做的事情。

SELECT memberid
     , count(status) as pending where status= 0
     , count(status) as approved where status= 1
     , count(status) as completed where status= 2
     , count(status) as denied where status= 3
  FROM `books` WHERE memberid = 1

我知道我可以做几个查询来提取这些信息以及使用该成员id拉取所有内容并通过php中的数组来获取信息,但我觉得有一种方法可以做得更好。

1 个答案:

答案 0 :(得分:0)

我经常这样做这种查询:

select memberid, 
  sum(status = 0) pending, 
  sum(status = 1) approved, 
  sum(status = 2) completed, 
  sum(status = 3) denied 
  from books where memberid = 1;