2015-09-17 71 views
0

我有2個表,我想讓他們全外連接。mysql上的完全外連接?

我使用下面的查詢:

select * from permissions 
left join user_news_permission on permissions.userID = user_news_permission.userID 
union 
select * from permissions 
right join user_news_permission on permissions.userID = user_news_permission.userID 

,但它提出了兩個用戶ID列,有些是空的,有些則不是。

我怎樣才能使它一個userID列,他們都不是null?

+0

什麼是你想實現什麼?當你使用'完全外部連接'時,'NULL'用戶ID是預期的,所以你的問題沒有意義。示例數據和期望的結果可能有所幫助 –

回答

0

當您執行左連接時,左表中找到的任何記錄都會在右表中找到,但不在右表中會導致右表中的所有列被空值替換(反之亦然)。

如果您看到空值,左表中存在一個記錄,其中右表中不存在給定的用戶標識,或者右表中存在不存在於左表中的記錄。

如果從permissions尋找的用戶ID和user_news_permission的任何信息,該聯盟的前半部分就足夠了:

select * from permissions 
left join user_news_permission on permissions.userID = user_news_permission.userID 

如果從user_news_permissionpermissions尋找用戶ID和任何信息,工會的後半段就足夠了:

select * from permissions 
right join user_news_permission on permissions.userID = user_news_permission.userID 

如果你只關心一個表的用戶,一個join是沒有必要的。只需從該表中選擇所有記錄。

0

我不是一個專業,但試試這個

SELECT* FROM permissions 
RIGHT JOIN user_news_permission 
ON permissions.userID = user_news_permission.userID;