1
假設存在聯繫人並且每個聯繫人都有一個或零個Sms記錄的假示例;我可以做到這一點具有多個列的MySQL子狀態
SELECT Contact.id, Contact.name, Sms.provider, Sms.number FROM Contact, Sms WHERE Sms.contactId = Contact.id.
但我需要顯示一個行,即使沒有該聯繫人的短信號碼。
我知道有兩種方法可以實現這一點。一個是具有兩個選擇
(SELECT Contact.id, Contact.name, Sms.provider, Sms.number FROM Contact, Sms WHERE Sms.contactId = Contact.id) UNION (SELECT id, name, null provider, null number FROM Contact WHERE (SELECT 1 FROM Sms WHERE contactId = Contact.id) IS NULL).
和另一個的UNION是二substatements
SELECT id, name, (SELECT provider FROM Sms WHERE contactId = Contact.id) provider, (SELECT number FROM Sms WHERE contactId = Contact.id) number FROM Contact
的UNION方法需要通過數據庫去兩次,substatements方法需要在同一個表中的兩個查找。
我經常遇到這種情況,我更喜歡MySQL中的所有代碼,而不是使用軟件代碼來完成此操作。使用MySQL通常變得更加高效和簡單。我所處理的許多實際情況都涉及大型數據庫。
有沒有辦法從一個查詢中獲取相關表中的兩個字段?
工程就像一個魅力!謝謝。值得注意的是,這將顯示沒有短信的聯繫人,但不會顯示沒有聯繫人的短信,因爲聯繫人是左側和起點。 – 2011-02-10 00:31:04