2012-01-18 71 views
0

我有這個查詢,它通過名稱搜索auctioneers,從多個表中獲取數據。這個查詢有什麼問題嗎?它返回一個結果兩次,我不明白爲什麼

它的返回結果上兩次,即使它使用「不同」,但我想不通這是怎麼回事...

這將會是困難的,提供數據的樣本,但我m希望有些SQL天才可以提供可能原因的建議...

SELECT DISTINCT a.id,a.name, al.city 
FROM auctioneers a 
LEFT JOIN auctioneersloc al ON al.auctioneerId = a.id 
LEFT JOIN auctioneerscont ac ON ac.auctioneerId = a.id 
WHERE a.name LIKE "%Jones%" 
GROUP BY city 

謝謝。

+1

你爲什麼要'組',但沒有做任何聚合? – JNK 2012-01-18 21:15:06

+2

我要冒險猜測,「兩次」你的意思不是(a.id,a.name,al.city)的整個組合,而只是(a.id,a.name)。這是完全可能的,因爲查詢在很多方面都是錯誤的。它按城市分組,並在每個城市中,您將獲得一個* RANDOM * ID和名稱。 DISTINCT適用於所有列,因此如果(a.id,a.name)存在於多個城市中,則可以獲取兩次。 – RichardTheKiwi 2012-01-18 21:16:30

+0

你爲什麼要加入auctioneerscont?你沒有選擇它,它不是在你的組的子句... – 2012-01-18 21:19:49

回答

1

如果您在適當的表格中複製了al.auctioneerIdac.auctioneerId,就會發生這種情況 - 您將獲得每個ID匹配返回的auctioneers中的相同記錄。

相關問題