2013-07-28 39 views
0

假設我有一個名爲「user」的mySQL表,其中包含用戶標識和密碼等。然後我有其他用於不同目的的桌子,比如他們最喜歡的食物的桌子,這些桌子將包含他們的用戶名和最喜歡的食物。MySQL選擇用戶存在的表

有沒有辦法查詢包含指定用戶標識的表並檢查它們是否在該表中有條目?

因此,如果我有三個名爲favorite_food,favorite_drink和favorite_candy的表,但userid只在favorite_food和favorite_drink中有值,我希望查詢返回favorite_food和favorite_drink。

我是一個初學者,我無法完全理解鏈接的概念。用戶標識是用戶的主鍵,其他表引用它?

回答

0

瞭解更多關於UNION的信息。我認爲這是你需要的。

SELECT * from favorite_food where `userid` = 50 
UNION 
SELECT * from favorite_drink where `userid` = 50 
UNION 
SELECT * from favorite_candy where `userid` = 50 
0

在SQL中,「鏈接」由JOIN表示。由於(如您所示)某些用戶不會擁有1或2個最喜歡的對象,因此我們需要使用LEFT OUTER JOIN s。然後,我們將在輸出中輸入NULL以代替缺失的收藏夾。

In your case: 

SELECT u.userid, f.food_name, d.drink_name, c.candy_name 
FROM user u 
    LEFT JOIN favorite_food f ON u.userid=f.userid 
    LEFT JOIN favorite_drink d ON u.userid=d.userid 
    LEFT JOIN favorite_candy c ON u.userid=c.userid 
ORDER BY u.user.id 

這將使你在user所有用戶最愛。