2012-01-18 27 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中的相同记录。

相关问题