2017-02-21 71 views
0

我有这两个表:使用与左where子句加入

USER: 
id name 
1 John 
2 Cian 
3 Una 

ATTR: 
id name   value  user_id 
1 LAST_LOGGED_IN 2016-10-10 1 
1 ADDED   2015-01-01 1 
1 ADDED   2015-01-01 2 

,并希望产生这样的:

user_id user_name last_logged_in added 
1  John  2016-10-10  2015-01-01 
2  Cian  NULL   2015-01-01 
3  Una  NULL   NULL 

我的尝试是:

select USER.NAME, ATTR.VALUE as LAST_LOGGED_IN 
from USER 
left join ATTR on USER.ID = ATTR.USER_ID 
where ATTR.NAME = "LAST_LOGGED_IN" 
GROUP BY USER.NAME; 

但是不正确的。

+0

在没有任何聚合函数的情况下,包含GROUP BY子句通常是一个坏主意。这就是说,你可能*做*想要一个聚合函数! – Strawberry

回答

-1
select USER.NAME, IF(ATTR.NAME = 'LAST_LOGGED_IN',ATTR.VALUE,NULL) as LAST_LOGIN 
from USER 
right join ATTR on USER.ID = ATTR.USER_ID 
GROUP BY USER.ID; 
+0

虽然这个代码片段是受欢迎的,并且可能会提供一些帮助,但如果它包含* how *和* why *的解释](// meta.stackexchange.com/q/114762)问题。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –