在CodeIgniter Datamapper中使用高级查询查找重复记录

时间:2012-02-23 12:46:09

标签: mysql codeigniter-datamapper

我正在尝试从数据库中获取所有重复的行。假设我将表entries与主键id ant VARCHAR列称为name。我已经有了一个有效的SQL查询:

SELECT id, entries.name FROM entries 
INNER JOIN 
    (SELECT name FROM entries 
     GROUP BY name 
     HAVING count(id) > 1) 
duplicate ON entries.name = duplicate.name

我想用CodeIgniter Datamapper lib构建类似的查询,以满足我的个人兴趣以及与其余代码的一致性。

我已经构建了子查询部分,它按预期工作:

$e = new Entry();
$e->group_by('name')->having('COUNT(id) > 1')->get();

但我无法弄明白如何将子查询集成到父查询中(INNER JOIN ... ON ...部分)。

1 个答案:

答案 0 :(得分:2)

首先你不需要接受内连接。

  

SELECT id,entries.name FROM entries GROUP BY name HAVING count(id)>   1

这将为您提供重复记录。 因此,您不需要为连接查询创建数据映射器。

你只能得到这个结果。

  

$ e = new Entry();

     

$ e-> group_by('name') - >拥有('COUNT(id)>   1' ) - >得到();

更新

  

SELECT id,entries.name FROM其中id为NOT的条目(SELECT id FROM   条目GROUP BY名称HAVING count(id)= 1)