我正在尝试从数据库中获取所有重复的行。假设我将表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 ...
部分)。
答案 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)