MySQL多次返回相同的结果,即使使用不同的
这里是MySQL多次返回相同的结果,即使使用不同的,mysql,sql,select,join,distinct,Mysql,Sql,Select,Join,Distinct,这里是sql SELECT DISTINCT t1.`name` team1_name, t1.id team1_id, t2.id team2_id, t2.`name` team2_name, sc.`name_en` sportCatname, c.title championshipTitle, e.dat
sql
SELECT DISTINCT
t1.`name` team1_name,
t1.id team1_id,
t2.id team2_id,
t2.`name` team2_name,
sc.`name_en` sportCatname,
c.title championshipTitle,
e.date eventDate,
e.id eventId,
e.title,
FROM
`Event` e,
`SportCategory` sc,
`Championship` c,
`Team` t1,
`Team` t2
WHERE
e.top = 1
AND t1.id = e.team1ID
AND t2.id = e.team2ID
AND sc.id = c.sportCategoryID
也尝试加入。不可能。它返回更正的行,但在结果集中,我有相同的行2次。我做错了什么?where子句中的
SportCategory
和Champion
没有关系。这就是产生重复结果的原因
您应该在
where
子句中提供关系。您可以检查任何列是否有不在其他行中的特殊字符吗?和sc.id=c.sportCategoryID
添加了这一行。现在每个结果在resultset中出现2次。是的,它减少了结果行。但不是对1time@heron:你必须再加一个。其中一个表应该是SportCategory
或Championship
,另一个表应该来自3个表的其余部分。这是一个非常好的例子,说明了为什么应该避免where
子句中过时的隐式联接。当使用显式JOIN
语法时,您不能意外地忘记一个JOIN并生成笛卡尔积。您应该更喜欢使用显式JOIN
s,而不是WHERE
子句中过时的隐式JOIN。