Sql 无需使用“分组方式”即可获得唯一的结果
出于某种原因,我无法使用GROUP BY,但我可以使用DISTINCT,如下所示:Sql 无需使用“分组方式”即可获得唯一的结果,sql,sqlite,Sql,Sqlite,出于某种原因,我无法使用GROUP BY,但我可以使用DISTINCT,如下所示: SELECT DISTINCT(name), id, email from myTable SELECT name, id, email FROM myTable t WHERE NOT EXISTS (SELECT * FROM myTable tt WHERE tt.name=t.name AND tt.id < t.id) 然而,上面的查询也列出了同名的人,因为我选择了多个列,而我只想选择唯一的名
SELECT DISTINCT(name), id, email from myTable
SELECT name, id, email
FROM myTable t
WHERE NOT EXISTS (SELECT * FROM myTable tt WHERE tt.name=t.name AND tt.id < t.id)
然而,上面的查询也列出了同名的人,因为我选择了多个列,而我只想选择唯一的名称。有没有办法不使用分组方式而获得唯一的名称?虽然使用分组方式是最直接的方式,但如果禁止,您可以执行其他操作。例如,可以将NOT EXISTS与子查询一起使用,如下所示:
SELECT DISTINCT(name), id, email from myTable
SELECT name, id, email
FROM myTable t
WHERE NOT EXISTS (SELECT * FROM myTable tt WHERE tt.name=t.name AND tt.id < t.id)
此查询使用NOT EXISTS删除名称相同且ID高于所选ID的行。请注意,由于此查询必须为每个名称选择一个用户,因此可能会根据其ID排除某些用户,这是一个相当任意的标准。请添加示例数据和预期输出如果存在具有不同ID的重复名称,您需要决定要保留哪些数据,即ID。第一个?最后?平均值?我只是想得到唯一的名字