这些SQL之间的区别是什么:
SELECT *
FROM COURS NATURAL JOIN COMPOSITIONCOURS NATURAL JOIN PARCOURS;
SELECT *
FROM COURS NATURAL JOIN (COMPOSITIONCOURS C JOIN PARCOURS P ON C.IDPARCOURS = P.IDPARCOURS) ;
SELECT *
FROM (COURS NATURAL JOIN COMPOSITIONCOURS C) JOIN PARCOURS P ON C.IDPARCOURS = P.IDPARCOURS ;
他们有不同的结果。
答案 0 :(得分:1)
如果没有样本结果集,很难准确判断,但我会想象你对自然JOIN的使用,这通常是不好的做法。理由是:
我会避免使用自然连接,因为自然连接是:
答案 1 :(得分:0)
感谢你们所有人的回答!我终于发现问题是因为使用了自然的JoIn。 使用自然连接时,它将以相同的名称连接每个列!当我多次使用NATURAL JOIN时,可能会自动加入那些具有相同名称但您不希望组合的列! 这是一个例子, 表a(IDa,名称,年份,IDb) 表b(IDb,bonjour,敬礼,IDc) 表c(IDc,年份,merci) 如果我写的像From a Natural Join b Natural c,因为IDb和IDc是表a,b,c的通用名称。好像好了!但请注意! a.year和b.year也可以加入!这就是我们不想要的!