Mysql 5.6.12 Group_concat 与内部连接问题

Posted

技术标签:

【中文标题】Mysql 5.6.12 Group_concat 与内部连接问题【英文标题】:Mysql 5.6.12 Group_concat with Inner Join Issue 【发布时间】:2013-07-07 01:15:03 【问题描述】:

之前我们使用 mysql 版本 5.5.27 并使用以下查询

 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了。相同的查询返回所有列为空的行。

请帮忙?

【问题讨论】:

【参考方案1】:

下面的链接应该会有所帮助

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

【讨论】:

@Amar 或 user2298894 您能否详细说明此链接的哪一部分与该问题相关。请引用解释此问题的部分内容(您可以edit答案)。 (强烈建议不要使用仅链接的答案)【参考方案2】:

这在 5.5.27 中真的有效吗?

INNER JOIN:当两个表中至少有一个匹配时返回所有行

你能改变 LEFT JOIN's 中的 INNER JOIN's

LEFT JOIN:从左表返回所有行,从右表返回匹配的行

【讨论】:

它确实奏效了,即使我也很惊讶。现在要在生产中进行如此多的更改将是一项非常繁重的任务和耗时。 也许旧版本删除了INNER JOIN StudentBatchTxn,因为您在选择中没有字段。但是根据 SQL 标准,INNER JOIN 应该只导致在两个表中都有条目的记录。 (所以它在最新版本中修复了:)

以上是关于Mysql 5.6.12 Group_concat 与内部连接问题的主要内容,如果未能解决你的问题,请参考以下文章

解决mysql中group_concat长度限制的方案

mysql 的group_concat方法

mysql用GROUP_CONCAT合并查询出现乱码?求大神!!!

mysql—group_concat函数

mysql查询结果拼接group_concat

mysql查询结果拼接group_concat