连接两个表,多行到单行不同列
Joining two tables, multiple rows into a single row different columns
我有两个table。
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
------------------------------
我想将第 2 个 table 的多条记录合并到第 1 个 table 的单行中。
USER_ID | USER_NAME | HOME_ADDRESS | WORK_ADDRESS
--------------------------------------------------
659 | John | New York | New Jersey
660 | Andrew | San Francisco | Fremont
如何在 select 查询中获得上述输出?
试试这个:
SELECT u.*, uah.address as home_address, uaw.address as work_address
FROM users u
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'
我有两个table。
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
------------------------------
我想将第 2 个 table 的多条记录合并到第 1 个 table 的单行中。
USER_ID | USER_NAME | HOME_ADDRESS | WORK_ADDRESS
--------------------------------------------------
659 | John | New York | New Jersey
660 | Andrew | San Francisco | Fremont
如何在 select 查询中获得上述输出?
试试这个:
SELECT u.*, uah.address as home_address, uaw.address as work_address
FROM users u
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'