在php中计算具有相同ID的行

时间:2015-06-17 14:09:39

标签: php mysql

我试图计算ID相同的行

|curs_code|cursistnr|Mark|Payed|
    C#        20       6    50
    PHP       25       8    100
    C#        8        7    100

输出需要

C#,2次

我已经尝试了

$sql = "SELECT count(curs_code) as 'count_of_curs' FROM cursus where curs_code='$id'";
$query = $magazijn->query($sql);
return $query->fetchAll());

但是给了我这个输出:

C#
 array (size=1)
  0 => 
   array (size=2)
    'count_of_curs' => string '1' (length=1)
  0 => string '1' (length=1)

PHP
 array (size=1)
  0 => 
   array (size=2)
    'count_of_curs' => string '1' (length=1)
  0 => string '1' (length=1)
你怎么想这个?

2 个答案:

答案 0 :(得分:3)

SELECT curs_code,count(*)as'count_of_curs'FROM cursus其中curs_code ='$ id'group by curs_code

如果您想要整个列表,请删除它。

答案 1 :(得分:2)

看起来你问的问题是“当我期望值为2时,为什么表达式COUNT(curs_code)返回值为1?”

我认为这意味着两个出现的 C# 对您来说实际上是相同的不同价值观。这可能是由于其中一个值中存在“隐藏”的空白字符。

要返回包含字符串 curs_code 的所有C#值,并“查看”实际存储的内容,请运行如下查询:

SELECT curs_code
     , HEX(curs_code)
     , CHAR_LENGTH(curs_code)
  FROM cursus
 WHERE curs_code LIKE '%C#%'

作为示范:

  SELECT cc
       , HEX(cc)
       , CHAR_LENGTH(cc)
    FROM ( SELECT 'C#' AS cc
           UNION ALL SELECT 'C#\t'
           UNION ALL SELECT 'C#\0'
         ) c  
   WHERE cc LIKE '%C#%'


  cc   HEX(cc)  CHAR_LENGTH(cc)  
  ---  -------  ---------------
  C#   4323                   2
  C#   432309                 3
  C#   432300                 3

如果您只想找到curs_code的“重复”值:

  SELECT c.curs_code
       , COUNT(1) AS count_of_curs_code
    FROM cursus
   GROUP BY c.curs_code
  HAVING COUNT(1) > 1
   ORDER BY c.curs_code