使用join时如何返回不同的行?

时间:2011-11-22 13:55:09

标签: mysql join distinct

我有以下查询返回1738行:

select a.street, b.id 
from TableA a
left join TableB b on a.city = b.city
order by a.street

执行以下查询,返回1073行:
select distinct street from TableA

如何在第一个查询中返回不同的行?
我尝试使用select distinct a.street, b.id,但这会返回1090行。

我需要另一次加入吗?

2 个答案:

答案 0 :(得分:5)

select a.street, b.id 
from TableA a
left join TableB b on a.city = b.city
group by a.street, b.id
order by a.street

答案 1 :(得分:0)

您应该仅将GROUP BY与聚合函数一起使用。 MySQL不会将其标记为错误,但在执行此操作时会丢失一些数据。

至于你的查询:如果你有1073个不同的街道,你在做“不同的a.street,b.id”时得到1090行,这意味着某些街道有不止一个b.id.您可以获得所有这些(并获得1090行)或只获取其中一些。要获得1073行,每个街道使用只有一个b.id:

select a.street, max(b.id)
from TableA a
left join TableB b on a.city = b.city
group by a.street
order by a.street