我想计算 ONLY ONE COLUMN 上具有不同值的行数。例如,如果我的activities
表中有email
列,我想计算email
列中具有不同值的列数。
我正在使用 Laravel + PostgreSQL 。我尝试了以下代码,但它计算了所有行!
$emailsCount = DB::table('activities')
->where('user_id',$UserId)
->distinct('email')
->count();
后来,我开始知道distinct()
不会接受任何争论,我试图找到解决问题的方法,并且有人(其他Stackoverflow问题)建议我使用groupBy
,如下所示代码。
$emailsCount = DB::table('activities')
->where('user_id',$UserId)
->groupBy('email')
->count();
但是它返回了错误的信息。例如,在我的情况下,它会返回1
,但我可以在email
列中看到很多不同的电子邮件。我不知道什么是错的。我怎样才能以正确的方式做到这一点?
答案 0 :(得分:1)
如你所说distinct()
不接受任何参数,而是可以将该参数传递给count
方法,如下所示:
$emailsCount = DB::table('activities')
->where('user_id',$UserId)
->distinct()
->count(["email"]);