2009-12-27 116 views
2

大約一年以來,我們一直允許用戶使用不唯一的用戶名和/或電子郵件地址登錄(儘管每個用戶都有唯一的ID)。雖然系統優雅地處理重複的用戶名/電子郵件,但我們已決定最終實施唯一的用戶名和電子郵件地址。我一直負責在MySQL中生成一個表格,這些表格將顯示重複項和正在使用副本ID的表格(即表格依賴於副本的用戶ID,使用1表示true,false表示0)。一旦重複數據標記爲刪除,此表格將作爲參考。總之,我期望生成如下表格:MySQL多重加入/子查詢問題

| User_id | 用戶名| 電子郵件| Exists_in_Table1 | Exists_in_Table2 | Exists_in_Table3 |
--------------------------------------------- -------------------------------------------------- ------------
| 0001 ..... | test1 ......... | 電子郵件。| 0 .......................... | 0 .......................... | 1 .......................... |
|技術..... | test2 ......... | 電子郵件。| 0 .......................... | 1 .......................... | 1 .......................... |
| 0003 ..... | test3 ......... | 電子郵件。| 1 .......................... | 1 .......................... | 1 .......................... |


這是如何實現的並不重要。由於我的SQL技能有點欠缺,我打算以編程方式使用PHP和一些簡單的SQL查詢來完成此操作。但是,我相信單個SQL查詢或一系列查詢(不使用PHP)是最乾淨的方法。我知道如何查詢重複項,但我似乎無法弄清楚如何查詢多個表,並以適當的方式通過用戶ID加入它們。我非常感謝所有幫助。謝謝。

回答

2
SELECT u.User_id, u.Username, u.Email, 
IF(t1.User_id IS NULL, 0, 1) AS Exists_in_Table1, 
IF(t2.User_id IS NULL, 0, 1) AS Exists_in_Table2, 
IF(t3.User_id IS NULL, 0, 1) AS Exists_in_Table3 
FROM Users u 
LEFT OUTER JOIN Table1 t1 USING (User_id) 
LEFT OUTER JOIN Table2 t2 USING (User_id) 
LEFT OUTER JOIN Table3 t3 USING (User_id); 
+0

謝謝你,如此快速的迴應!我一回到辦公室就會嘗試。 – 2009-12-27 08:12:40