Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 无需使用“分组方式”即可获得唯一的结果_Sql_Sqlite - Fatal编程技术网

Sql 无需使用“分组方式”即可获得唯一的结果

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) 然而,上面的查询也列出了同名的人,因为我选择了多个列,而我只想选择唯一的名

出于某种原因,我无法使用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)
然而,上面的查询也列出了同名的人,因为我选择了多个列,而我只想选择唯一的名称。有没有办法不使用分组方式而获得唯一的名称?

虽然使用分组方式是最直接的方式,但如果禁止,您可以执行其他操作。例如,可以将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。第一个?最后?平均值?我只是想得到唯一的名字