【问题标题】:SELECT query for checking duplicates without inputSELECT 查询以检查没有输入的重复项
【发布时间】:2013-04-16 07:35:08
【问题描述】:

这是我第一次在没有输入的情况下使用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 发现重复的结果。还是我错了?

非常感谢。

【问题讨论】:

  • 我认为那里的WHERE 子句没用。

标签: php mysql database


【解决方案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

【讨论】:

  • 你好,谢谢。对此感到抱歉,但我怎样才能获取结果?这样我就可以处理结果了吗?通常我在查询中使用 num_rows 但这是否正确,因为查询已经满足条件 > 1。
  • 你的意思是如何从 PHP 或 mysql 中获取结果?
  • 我更新了我的答案。如果有帮助,请考虑接受答案。谢谢
  • 你好,这仍然不是我想要的。对不起。语言困难。看看我的桌子。 (a AND b AND c) 在该数据库中恰好是两倍。所以查询应该计算重复=是(结果-> 1)。由于(a1 OR a2 AND b AND c),您的表格具有所有不同的值。希望它现在开始清楚。非常感谢。
  • 你的意思很清楚。 Group by 只允许不同的结果。我更新了结果
【解决方案2】:

我不确定我是否完全理解了这个问题,但是如果您想显示存在多行且所有三个字段的值相同的值和计数,您可能需要类似...

SELECT FIELD_A, FIELD_B, FIELD_C, COUNT(*)
    FROM MY_TABLE
    GROUP BY FIELD_A, FIELD_B, FIELD_C
    HAVING COUNT(*) > 1;

【讨论】:

  • 你好,谢谢。对此感到抱歉,但我怎样才能获取结果?这样我就可以处理结果了吗?通常我在查询中使用 num_rows 但这是否正确,因为查询已经满足条件 > 1。
  • @bonny,我没有可用的示例,但如果我没记错的话,您需要在您的 $query 对象上调用 mysqli_fetch_array
  • 你好,这仍然不是我想要的。对不起。语言困难。看看我的桌子。 (a AND b AND c) 在该数据库中恰好是两倍。所以查询应该计算重复=是(结果-> 1)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 2023-02-03
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多