2017-04-03 42 views
1

我是新來的SQL,我想用一個很難寫的行爲來實現查詢。選擇不同的?

我的「用戶」表看起來像這樣和PostGRE

id  |   email   | guest |   token    
-----------+---------------------------+-------+---------------------------------------------- 
6XH898SJ | [email protected]   | t  | test_token_1234 
L7DJ456MV | [email protected]   | f  | faQ2UJFRKZNtieFGub6D0XwhfA1QqLD6lwU5DmIzBaI= 
L2CN592JV | [email protected]  | f  | gspCpQSOtuxNpT8n+C1szL12/YKvBfygfpGLPLoBDws= 
5KX442FK | [email protected]   | f  | test_token_1234 

很簡單下運行:

多個guest用戶可以使用相同的電子郵件存在。 只有一個註冊用戶可以與給定的電子郵件存在,但您可以同時擁有一個註冊用戶和一個註冊用戶。 令牌不過是電子郵件的散列,這就是爲什麼第一個和第四個用戶是一樣的。

我的請求必須爲客人和非客人選擇所有的令牌。但是,如果兩個令牌相同(即兩個用戶使用相同的電子郵件),則需要檢索WHERE來賓爲false的行。

有人可以幫助我嗎?

+0

格式的表格 –

回答

1

在Postgres裏,你可以用distinct on做到這一點:

select distinct on (token) u.* 
from user u 
order by token, guest desc;