连接和模式匹配SQL

时间:2013-06-19 13:41:02

标签: sql

我在SQL中有以下3个表:

帐户,包含

id     zip     city 
----   -----   ---------------
121    20085   Los Angeles

客户,包含

user id   zip  
-------   ------
121       20085

地址,包含

zip     city-state
-----   ----------------
121     Los Angeles, CA

我想在名为Accounts的{​​{1}}中添加一个额外的列,该列将是一个连接字段,将locationcity连接到Accounts来自city-state,匹配Addr

我无法进行常规加入,因为city中的所有zip都不在Accounts中,所以我会丢失很多记录,但表Addr包含所有Customerzip所以我想我可以利用它。

所需的输出:

帐户,包含

user id

1 个答案:

答案 0 :(得分:0)

你是否喜欢这样的事情:

SELECT
  `c`.`user_id`, 
  `c`.`zip`, 
  `a`.`city`,
  CONCAT_WS( ';', `c`.`city`, `aa`.`city-state` ) AS `location`
FROM
  `Accounts` AS `a`
LEFT JOIN
  `Addr` AS `aa`
     ON
        `aa`.`zip`, `a`.`id`
LEFT JOIN
  `Customer` AS `c`
     ON
        `c`.`user id`, `a`.`id`