Codeigniter:没有使用的表

时间:2018-06-05 18:29:47

标签: php sql codeigniter

我有一张用户表。哪些数据是很多重复数据。我想保留所有这些重复数据。所以我有3个条件

  1. 没有图片的帐户
  2. 图片帐户
  3. 带有图片或没有图片的重复帐户
  4. 例如

    ID |电子邮件|图片
    1 | ba@mail.com | img.jpg
    2 | ba@mail.com | NULL
    3 | ba@mail.com | img2.jpg
    4 | ba@mail.com | NULL
    5 | aa@mail.com | NULL

    那么如何获取这些重复帐户的ID,但优先处理图片不是空的,并优先考虑最新的ID? (我希望它返回'3')

    我在这里尝试代码

    public class OtherScript : MonoBehaviour
    {
        private static OtherScript instance;
    
        public static OtherScript Instance { get { return instance; } }
    
        private void Awake()
        {
            instance = this;
        }
    
        public void DoSomething()
        {
            Debug.Log("Call");
        }
    }
    

    如果帐户重复,它的效果很好,并且它们都在图片列上为NULL。但是当帐户没有复制或复制时它不能正常工作,但其中一个图片不是空的。

    这里的错误代码: 错误号码:1096 没有使用表格

    谢谢!

4 个答案:

答案 0 :(得分:1)

这可能对你有帮助

//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;

答案 1 :(得分:1)

您应该将图片移动到另一个表并在那里使用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();

答案 2 :(得分:0)

最后刚刚完成了一些棘手的棘手代码

$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 :(得分:0)

尝试使用这3个条件,让我知道它是否有效。

$ this-> db-> select(GROUP_CONCAT(id),email,GROUP_CONCAT(picture));

$这 - > DB-> GROUP_BY( '电子邮件');

$这 - > DB-> ORDER_BY( '画面', 'DESC');