选择不同的if?

时间:2017-04-03 14:04:13

标签: sql postgresql

我是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

很简单:

多个访客用户可以使用相同的电子邮件。 只有一个注册用户可以与给定的电子邮件一起存在,但您可以同时拥有一个访客和一个注册用户。 该令牌只不过是电子邮件的哈希值,这就是为什么它对第一个和第四个用户来说是相同的。

我的请求必须为来宾和非来宾选择所有令牌。但是如果两个令牌是相同的(即两个用户使用相同的电子邮件),我需要检索客户端为假的行。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

在Postgres中,您可以使用distinct on

执行此操作
select distinct on (token) u.*
from user u
order by token, guest desc;