php - 用于在没有输入的情况下检查重复项的 SELECT 查询

标签 php mysql database

这是我第一次在没有输入的情况下使用 SELECT 查询。我想检查一个表是否有重复项。结果我只需要计算结果。

所以我有这个:

SELECT 
       `field a`, `field b`, `field c` 
FROM 
        table 
WHERE 
        `a` AND `b` AND `c` 
GROUP BY
    duplicates
HAVING
    COUNT(duplicates) > 1

当结构如下时,这会检查表中的重复项吗:

field a |  field b  | field c
  a          b          c
  a          b          c
  d          e          f

我怎样才能得到结果?它只是 num_rows 还是我从查询中得到一个整数作为结果?

通常我使用 num_rows 从这样的查询中获取结果:

$query = $db->query("SELECT ...");
$result = $query->num_rows;
if ($result !== 0 ){do something}

num_rows 和结果之间通常应该有区别,因为如果我使用 num_rows 进行计数,它将返回 2,因为 2 有条件 a AND b AND c 所以我认为上面的查询将返回 1 作为找到 1 重复项的结果。还是我错了?

非常感谢。

最佳答案

如果您将具有相同 A、B 和 C 的两条记录定义为重复记录,那么您可以使用这样的查询:

SELECT A, B, C, COUNT(*) counter
FROM `MYTABLE`
GROUP BY A,B,C
HAVING COUNT(*) > 1

考虑到你的表有 3 个项目,如你的问题,你的结果将是:

 A  |  B  |  C  | counter
 ---+-----+-----+--------
'a' | 'b' | 'c' | 2

在 PHP 中获取结果:

while ($row = mysql_fetch_assoc($result)) {
    $a = $row['A'];
    $b = $row['B'];
    $c = $row['C'];
    $counter = $row['counter'];
    // Do something with your values
}

请考虑使用mysqli 或PDO。一个好的起点:mysqli or PDO

关于php - 用于在没有输入的情况下检查重复项的 SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16031255/

相关文章:

php - 我需要有关如何让我的插入代码在 php 和 mysql 中工作的提示

php - mySQL 图片上传

mysql - 事件动态值传递

php - 使用 mysql 的 CONCAT() 作为列名

database - Oracle:计算 DATE 类型列的天分数

php - 在 php 和 mysql 中以数组格式获取数据

php - php 中函数内函数的替代方法

database - 使用ogr2​​ogr将PostGIS表转换为个人地理数据库

javascript - 使用 PHP 和 AJAX 从表中加载数据

不同分组依据上的 MySQL sum()