我正在尝试搜索数据库中的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/