PHP Mysql 检查行以及有多少具有相同的电子邮件


PHP Mysql Check the row and how many have the same email

>我在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...

使用此查询:

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

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

如果您使用的是 mysql_* 函数,则可以使用该代码获取所有值:

$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 扩展。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL:选择 API 指南和相关常见问题解答以获取更多信息。

例如使用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

试试这个:

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

使用这个:

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