Php Codeigniter:没有使用表
我有一个用户表。哪些数据是大量重复数据。我想保留所有那些重复的数据。所以我有3个条件Php Codeigniter:没有使用表,php,sql,codeigniter,Php,Sql,Codeigniter,我有一个用户表。哪些数据是大量重复数据。我想保留所有那些重复的数据。所以我有3个条件 没有图片的帐户 用图片叙述 有图片或无图片的重复帐户 比如说 ID|电子邮件|图片 1 | ba@mail.com| img.jpg 2 | ba@mail.com|空 3 | ba@mail.com| img2.jpg 4 | ba@mail.com|空 5 | aa@mail.com|空 那么,如何获得这些重复帐户的ID,但优先排序图片不为空,并优先排序最新的ID?(我希望它返回'3') 在这里我
1 | ba@mail.com| img.jpg
2 | ba@mail.com|空
3 | ba@mail.com| img2.jpg
4 | ba@mail.com|空
5 | aa@mail.com|空 那么,如何获得这些重复帐户的ID,但优先排序图片不为空,并优先排序最新的ID?(我希望它返回'3') 在这里我尝试代码
$this->db->select('id');
$this->db->from('users');
$this->db->where('email', $email);
$query0 = $this->db->get();
if($query0->num_rows() == 1){
return $query0->row('id');
} else {
$this->db->select('id');
$this->db->from('users');
$this->db->where(array('email' => $email, 'picture IS NOT' => NULL));
$query1 = $this->db->get();
if($query1->num_rows() == 1){
return $query1->row('id');
} else {
$this->db->select('id');
$this->db->from('users');
$this->db->where('email', $email);
$this->db->limit('1');
return $this->db->get()->row('id');
}
如果帐户重复,并且两者在图片列上都为空,则效果良好。但是,当帐户不重复或重复,但其中一个帐户的图片不为空时,它就不能正常工作
下面是错误代码:
错误号码:1096
没有使用桌子
谢谢大家! 这可能对你有好处
//in below query $emil is your input taht you need to find duplicate
$q=$this->db->query("SELECT MAX(id) AS id FROM users WHERE picture IS NOT NULL AND email = '$email');
$id=$q->row()->id;
您可能应该将图片移动到另一个表中,并在其中使用user.id作为外键。无论如何,这听起来像是你想要的:
$this->db->select('max(id)');
$this->db->where('(email = "$email" and picture is not null) or email = "$email"');
$result = $this->db->get('users')->row();
终于完成了一些复杂的代码
$this->db->select_max('id');
$this->db->from('users');
$this->db->where(array('email' => $email, 'picture IS NOT NULL' => NULL));
if($this->db->get()->row('id') >= 1){
$this->db->select_max('id');
$this->db->from('users');
$this->db->where(array('email' => $email, 'picture IS NOT NULL' => NULL));
return $this->db->get()->row('id');
} else {
$this->db->select_max('id');
$this->db->from('users');
$this->db->where('email',$email);
return $this->db->get()->row('id');
}
这很有效。谢谢你的帮助 尝试使用这3种条件,并告诉我是否有效 $this->db->select(GROUP_CONCAT(id)、email、GROUP_CONCAT(picture)) $this->db->group_by('email')
$this->db->order_by('picture','DESC') 在将来的某个时候,你会因为这样的设计而自责
从用户中选择max(id),其中picture不为null,email='email'
只是更新我的表@kisaragit这是一个奇怪的模式