【问题标题】:PHP Mysql Check the row and how many have the same emailPHP Mysql 检查行和有多少有相同的电子邮件
【发布时间】:2012-08-07 14:41:11
【问题描述】:

我在 PHP MYSQL 上遇到了这个问题 这是我的数据库示例

id word email
1  Helo jon@gmail.com
2  Sim  jon@gmail.com
3  Sam  jon@gmail.com
4  Mac  mars@gmail.com
5  Mimic mars@gmail.com

现在我在这里试图解决的是,例如,我如何计算具有相同电子邮件的电子邮件 输出网页:

id word email          submitted words dictionary
1  Helo jon@gmail.com        3         regular
2  Sim  jon@gmail.com        3         regular
3  Sam  jon@gmail.com        3         regular
4  Mac  mars@gmail.com       2         regular
5  Mimic mars@gmail.com      2         regular

提交的字数是电子邮件的计数。 我如何在 php 上计算出相同的电子邮件并输出 3...

【问题讨论】:

    标签: php mysql count


    【解决方案1】:

    使用mysql_num_rows() 例如:

    //mysql_connect() & mysql_select_db()    
    $q=mysql_query("SELECT * FROM tablename WHERE email='jon@gmail.com'");
    $count=mysql_num_rows($q); //3
    

    【讨论】:

      【解决方案2】:

      使用这个查询:

      SELECT email, COUNT(*) AS nb_emails
      FROM your_table
      GROUP BY `email`
      

      它将为您表中的每封电子邮件返回相关记录的数量。

      如果您使用mysql_* functions,您可以使用该代码获取所有值:

      $sql = "SELECT email, COUNT(*) AS nb_emails
                FROM your_table
                GROUP BY `email`";
      $res = mysql_query($sql);
      while($row = mysql_fetch_assoc($res))
      {
          // do something with the values of the last fetched record. The values are stored in $row['email'] and $row['nb_emails']
      }
      

      注意:不鼓励使用 MySQL 扩展。相反,应该使用MySQLiPDO_MySQL 扩展名。另请参阅MySQL: choosing an API 指南和related FAQ 了解更多信息。

      【讨论】:

      • 我如何获取它? $row = mysql_fetch_array( $sql ) 是正确的然后 $row['nb_emails'];
      【解决方案3】:

      试试这个:

      SELECT a.ID, a.Word, a.Email, b.SubmittedWords
      FROM   myTable a INNER JOIN
              (
                  SELECT email, COUNT(*) SubmittedWords
                  FROM mytable
                  GROUP BY email
              ) b
                  ON a.email = b.email
      

      【讨论】:

        【解决方案4】:

        使用这个:

        select email,
        count(email) as count_same
        from table_users
        group by email
        having ( count(email) > 1 );
        

        【讨论】:

          猜你喜欢
          • 2012-09-27
          • 1970-01-01
          • 2012-04-13
          • 2019-09-25
          • 2019-11-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多