我最初在应用程序中有两个表。他们是
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_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
答案 0 :(得分:2)
从模糊问题中我可以理解,我认为您只需要加入三个表,因为user_id
中有多个table 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
答案 1 :(得分: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