2016-07-27 86 views
2

我有两个表,连接两个表,多行到一行的不同列

USER 

USER_ID | USER_NAME 
-------------------- 
659 | John 
660 | Andrew 
661 | Bianca 
-------------------- 


USER_ADDRESS 

USER_ID |TYPE | ADDRESS 
------------------------------ 
659  | HOME | New York 
659  | WORK | New Jersey 
660  | HOME | San Francisco 
660  | WORK | Fremont 
------------------------------ 

输出应该是,

USER_ID | USER_NAME | HOME_ADDRESS | WORK_ADDRESS 
-------------------------------------------------- 
659 | John | New York  | New Jersey 
660 | Andrew | San Francisco | Fremont 

我如何在选择查询上面的输出?提前致谢!

回答

2

试试这个:

SELECT u.*, uah.address as home_address, uaw.address as work_address 
FROM users 
LEFT OUTER JOIN user_address uah 
    ON u.user_id = uah.user_id 
    AND uah.type = 'HOME' 
LEFT OUTER JOIN user_address uaw 
    ON u.user_id = uaw.user_id 
    AND uaw.type = 'WORK' 
+0

什么是做一个LEFT OUTER JOIN的目的是什么?是否它们没有存储在USER_ADDRESS表中的任何信息,但仍希望显示它们? – CodyMR

+0

谢谢!有用。 – swirl84

+0

祝你有美好的一天;) –