3

我正在尝试从数据库中获取所有重复的行。假设我有一个entries主键idantVARCHAR列的表,称为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 ...部分)中。

4

1 回答 1

2

首先,您不需要进行内部连接。

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

这会给你重复的记录。因此,您不需要为连接查询制作数据映射器。

只有这样才能得到结果。

$e = 新条目();

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

更新:

SELECT id, entries.name FROM entries where id NOT IN (SELECT id FROM entries GROUP BY name HAVING count(id) = 1)

于 2012-02-27T06:50:14.093 回答