2013-07-09 70 views
2

早些时候,我们曾经使用的MySQL版本5.5.27,并与下面的查询mysql的5.6.12 GROUP_CONCAT与内部连接问题

SELECT S.StudentId, 
     SED.StudentEnrollmentDetailsId, 
     FirstName, MiddleName, LastName, Address, PermanentAddress, 
     GROUP_CONCAT(B.BatchName ORDER BY B.BatchId,B.IsVirtualBatch DESC) AS AllBatch 
FROM Student S 
INNER JOIN StudentEnrollmentDetails SED ON SED.StudentId = S.StudentId 
INNER JOIN StudentBatchTxn SBT ON SBT.StudentId = S.StudentId 
WHERE SED.StudentId = ? 
AND SED.StudentEnrollmentDetailsId = ? AND S.CompanyId = ? 

这个查询使用正常运行的学生是否存在于StudentBatchTxn与否。

但是现在我们已经升级到mysql 5.6.12了。相同的查询正在返回所有列为空的行。

请帮助?

回答

2

下面的链接应该是有帮助的

http://dev.mysql.com/doc/refman/5.6/en/bugs.html

+0

@Amar或user2298894可以请您详细说明该链接的哪一部分与问题相关ñ。请引用解释此问题的内容部分(可以[编辑](http://stackoverflow.com/posts/17548303/edit)答案)。 (强烈建议不要链接回答) – Rik

2

那是否就真的在5.5.27工作?

  • INNER JOIN:返回的所有行的时候有两个表

你可以改变INNER JOIN在LEFT JOIN的

  • 留在至少一个匹配JOIN:从返回所有行左表和
+0

它确实有效,即使我很惊讶。现在要改变这么多的生产将是非常繁重的任务和耗时。 – Amar

+0

也许旧版本因为没有选择字段而剥离了'INNER JOIN StudentBatchTxn'。但是根据SQL标准,INNER JOIN只应该在两个表中记录条目。 (所以它固定在最新版本:) – Rik

+0

Thanx @Rik为您提供帮助 – Amar