出于某种原因,我无法使用GROUP BY
,但我可以像这样使用DISTINCT
:
SELECT DISTINCT(name), id, email from myTable
然而,上面的查询列出了具有相同名称的人,因为我选择了多个列,而我只想选择唯一的名称。有没有使用GROUP BY
来获取唯一名称?
答案 0 :(得分:2)
尽管使用GROUP BY
是最直接的方式,但如果禁止使用,则可以执行其他操作。例如,您可以将NOT EXISTS
与子查询一起使用,如下所示:
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删除某些用户,这是一个相当随意的标准。