我是SQL的新手,我想用一种我很难写的行为来实现查询。
我的用户'表看起来像这样,并在PostGRE下运行
id | email | guest | token
-----------+---------------------------+-------+----------------------------------------------
6XH898SJ | email@gmail.com | t | test_token_1234
L7DJ456MV | another@gmail.com | f | faQ2UJFRKZNtieFGub6D0XwhfA1QqLD6lwU5DmIzBaI=
L2CN592JV | tyesttest@gmail.com | f | gspCpQSOtuxNpT8n+C1szL12/YKvBfygfpGLPLoBDws=
5KX442FK | email@gmail.com | f | test_token_1234
很简单:
多个访客用户可以使用相同的电子邮件。 只有一个注册用户可以与给定的电子邮件一起存在,但您可以同时拥有一个访客和一个注册用户。 该令牌只不过是电子邮件的哈希值,这就是为什么它对第一个和第四个用户来说是相同的。
我的请求必须为来宾和非来宾选择所有令牌。但是如果两个令牌是相同的(即两个用户使用相同的电子邮件),我需要检索客户端为假的行。
有人能帮助我吗?
答案 0 :(得分:1)
在Postgres中,您可以使用distinct on
:
select distinct on (token) u.*
from user u
order by token, guest desc;