0

我在数据库中多次拥有相同的电子邮件 ID,我需要获取并显示所有用户,不包括重复用户。

请帮我解决这个问题

预期输出:

[
    {
        "donation_id": "DMS1900001",
        "donor_name": "Naveen",
        "phone": "9164020904",
        "email": "naveen@vibhaa.in"

    },
    {
        "donation_id": "DMS1900032",
        "donor_name": "Naveen",
        "phone": "9164020904",
        "email": "abhilash@vibhaa.in"
    }
]

我的代码:

$donordata =  DB::table('donors')
                      ->groupBy('email')
                        ->get();
         return $donordata;

和回应

SQLSTATE[42000]: Syntax error or access violation: 1055 'minidms_db.donors.id' isn't in GROUP BY (SQL:
        select * from `donors` group by `email`)

但数据在表中:

[
    {
        "donation_id": "DMS1900001",
        "donor_name": "Naveen",
        "phone": "9164020904",
        "email": "naveen@vibhaa.in",
    },
    {
        "donation_id": "DMS1900002",
        "donor_name": "Naveen",
        "phone": "9164020904",
        "email": "naveen@vibhaa.in",
    },
    {
        "donation_id": "DMS1900035",
        "donor_name": "Naveen",
        "phone": "9164020904",
        "email": "abhilash@vibhaa.in",
    }
]
4

2 回答 2

1

我会在这里做一个独特的选择:

$donordata = DB::table('donors')
                 ->distinct()
                 ->get();

如错误消息所述,这里的问题是您正在执行SELECT *但您仅按单个列分组:

select * from `donors` group by `email`

如果您想使用一种GROUP BY方法来删除重复项,那么您可以使用:

SELECT donation_id, donor_name, phone, email
FROM donors
GROUP BY donation_id, donor_name, phone, email;

但是,在这种情况下,只调用 Laravel 的distinct()函数会更容易一些。

于 2019-10-22T10:08:39.640 回答
0

编辑应用程序的数据库配置文件config/database.php

将 mysql 上的严格值更新为false

return [
   'connections' => [
      'mysql' => [
         'strict' => false
       ]
   ]
]
于 2019-10-22T10:08:27.323 回答