我有以下查询返回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行。
我需要另一次加入吗?
答案 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