php - 检查 MySQL 数据库是否有重复条目

标签 php mysql whmcs

已经有很多关于此的问题,但是我还没有找到任何可以解决我的特定问题的问题。我正在对 MySQL 数据库进行检查,如果超过 1 行具有相同的 BILLING_ID,我想将其打印出来,因为这些应该是唯一的,很少有异常(exception)。

但是,当它们具有不同值的 GAME_ID 时,我需要排除重复项,因为我们确实设置了具有相同计费 ID 的子服务。

我下面的代码大部分都有效,直到我的逻辑失败。如果有 2 个以上的条目具有相同的 Billing ID,我需要检查它们是否具有相同的 GAME_ID。我被这个难住了,不知道如何继续。

$res_services = mysql_query('SELECT SERVICE_ID, BILLING_ID, USER_ID, GAME_ID FROM tc_services', $tca_conn);

while ($row_services = mysql_fetch_array($res_services))
{
    $service_id = $row_services["SERVICE_ID"];
    $billing_id = $row_services["BILLING_ID"];
    $user_id = $row_services["USER_ID"];
    $game_id = $row_services["GAME_ID"];

    // If the Billing ID field is blank, ignore
    if ($billing_id == "")
    {
        continue;
    }

    $res_dupes = mysql_query("SELECT * FROM tc_services WHERE BILLING_ID='" . $billing_id . "'", $tca_conn);
    $num_rows = mysql_num_rows($res_dupes);

    if ($num_rows >= 2)
    {
        while ($row_dupes = mysql_fetch_array($res_dupes))
        {
             //check if GAME_ID is different
        }

        echo 'Duplicate Services found for User ID: ' . $user_id . 'Billing ID: ' . $billing_id . '</br>';
    }
}

最佳答案

无需循环和进行多次调用,只需使用一次数据库调用

子查询 X 识别出重复的 BILLING_ID、GAME_ID。
然后我们加入回去得到USER_ID

注意:您必须使用此标准 SQL 而不是空洞的 MySQL GROUP BY 扩展

SELECT
    t.BILLING_ID, t.USER_ID
FROM
    (
    SELECT
        BILLING_ID, GAME_ID, COUNT(*)
    FROM
        tc_services
    GROUP BY
        BILLING_ID, GAME_ID
    HAVING
        COUNT(*) > 1
    ) X
    JOIN
    tc_services t ON X.BILLING_ID = t.BILLING_ID AND X.GAME_ID = t.GAME_ID

关于php - 检查 MySQL 数据库是否有重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14621542/

相关文章:

mysql - 简单 : What makes this query inefficent?

php - 在 MySQL 中 INSERT INTO ... ON DUPLICATE KEY UPDATE 的正确语法是什么?

php - 创建 whmcs 6 feed 以检查客户端是否已登录

php - WHMCS 插件模块管理部分模板

php - MySQL 无法区分大的唯一值

php - PDO 不能绑定(bind)两个属性

javascript - 如何删除一个json元素?

java - 如何从 Android 应用程序向 WHMCS 安装发送正确的发布请求?

php - Drupal 7 - 从本地主机发送电子邮件

javascript - 如何在Modal中提交表单?