0

我最初在应用程序中有两个表。他们就像

user                       
------------------------      
user_id                      
column1                         
column2
..

Columnn

用户帐户信息

user_id                   
account_number (can have multiple a/c number on single user_id)        
column1                      
column2          
..            
Columnn  

查询就像

SELECT u.column1, uai.column1, uai.Keycolumn2
        FROM user u
        LEFT OUTER JOIN user_account_info uai on u.user_id  = uai.user_id

但后来添加了一个新表 user_account_map 并更改了 user_account_info

用户

user_id                 
column1                                        
column2             
..               
Columnn   

用户帐户信息

account_number (can have multiple a/c number on single user_id)                       
column1                  
column2               
..               
Columnn 

user_account_map

user_id                      
account_number (can have multiple a/c number on single user_id)                
column1              
column2 

如何重写查询以匹配上一个查询的输出。可以这样写吗

SELECT u.column1, uai.column1, uai.Keycolumn2
FROM user u
LEFT OUTER JOIN user_account_map uam on u.user_id  = uam.user_id
LEFT OUTER JOIN user_account_info uai on u.account_number  = uai.account_number
4

2 回答 2

2

从你的模糊问题中我可以理解,我认为你只需要加入三个表,因为你有多个表,user_idtable user_account_map需要GROUP BY那个字段:

SELECT u.column1, uai.column1, uai.Keycolumn2, MAX(account_number) AS accNo
FROM user u 
LEFT OUTER JOIN user_account_info uai USING(user_id)
LEFT OUTER JOIN user_account_map uma  USING(user_id)
GROUP BY uma.user_id

或者以其他方式简单地加入包含account_number具有双重条件的字段的两个表:

SELECT u.column1, uai.column1, uai.Keycolumn2
FROM user u 
LEFT OUTER JOIN user_account_info uai USING(user_id)
LEFT OUTER JOIN user_account_map uma ON uma.account_number = uai.account_number AND uma.user_id = u.user_id 
于 2012-11-03T14:29:37.627 回答
1

我的查询有自己的答案。我所问的查询是否正确,是正确的。
那是,

SELECT u.column1, uai.column1, uai.Keycolumn2
FROM user u
LEFT OUTER JOIN user_account_map uam on u.user_id  = uam.user_id
LEFT OUTER JOIN user_account_info uai on u.account_number  = uai.account_number
于 2012-12-21T09:02:53.903 回答