我正在尝试搜索数据库中的1个表并计算3个字段不匹配的唯一记录的数量。我有以下内容,但根本无法使用。我是SQL菜鸟,因此对您的帮助非常感谢!

这就是我到目前为止

<? php
SELECT COUNT(*)
FROM (
SELECT  DISTINCT field1, field2, field3
FROM table1);
$result = $query;
$row = mysql_fetch_array($result);
echo $row;
?>


谢谢你的帮助!

编辑:我认为这种语法不能满足我的需要。

我需要根据“标题”,“名”,“姓”字段与其他行内容不匹配的情况,对“表1”中的唯一记录进行计数。例如下表

+---------+-----------+-----------+-----------+
|   ID    |   Title   | Firstname | Surname   |
+---------+-----------+-----------+-----------+
|    1    |    Mr     |    J      |   Doe     |
|    2    |    Mrs    |    J      |   Doe     |
|    3    |    Mr     |    A      |   James   |
|    4    |    Mr     |    J      |   Doe     |
+---------+-----------+-----------+-----------+


该查询将需要返回答案3。上表中只有1行,其中“标题”,“名字”和“姓”匹配,因此不计在内。

我希望这一点更加清楚。我想我对DISTINCT的功能感到困惑!

再次编辑:

“现实世界”场景是我有一个包含人员详细信息的表,并希望提取它们以发送邮件,但我不希望重复。

最佳答案

我不确定您的PHP代码是否正确,但SQL查询是否正确(仅需要别名):

SELECT COUNT(*)
FROM
  ( SELECT DISTINCT field1, field2, field3
    FROM table1
  ) AS x ;                                 -- you need to alias the derived table


您还可以使用以下命令:

SELECT COUNT(*)
FROM
  ( SELECT 1                                -- doesn't matter what is here
    FROM table1
    GROUP BY field1, field2, field3
  ) AS x ;


或此查询:

SELECT COUNT(DISTINCT field1, field2, field3)
FROM table1 ;

关于mysql - MySQL查询根据3个字段的不同返回唯一值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23706243/

10-13 07:31
查看更多