为什么这个MySQL Query会返回两行?

时间:2011-04-29 06:25:36

标签: mysql database

我的查询返回两行,其中第二行是第一行的完全重复。我想知道它为什么会发生的原因?我知道如果我把LIMIT 1放在最后,它将只返回一行,所以我会要求不建议这个解决方案。这是我的查询

SELECT u.username,u.password,u.registerDate,u.lastVisitDate,u.lastVisitIp,
u.activationString,
u.active,u.block,u.contact_id,c.name,c.email,c.pPhone,c.sPhone,c.rPhone,c.area_id,
a.name as areaName, a.city_id, ct.name as cityName, ct.state_id, s.name as stateName, 
s.country_id, cn.name as countryName 
FROM users u 
LEFT JOIN contacts c 
ON (u.contact_id = c.id) 
LEFT JOIN areas a 
ON (c.area_id = a.id) 
LEFT JOIN cities ct 
ON (a.city_id = ct.id) 
LEFT JOIN states s 
ON (ct.state_id = s.id) 
LEFT JOIN countries cn 
ON (s.country_id = c.id) 
WHERE u.id = 1

以上查询是从6个表中获取数据,其中包括

users s
contacts c
areas a
cities ct
states s
country cn

上面的所有6个表都有名为id的主键,外键如下

users.conntact_id
contacts.area_id
areas.city_id
cities.state_id
states.country_id

为什么它返回两行而不是一行?

1 个答案:

答案 0 :(得分:2)

您加入的其中一个表有多个元素,因此所有其他元素都会重复。该表很可能是contacts表。