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 与内部连接问题的主要内容,如果未能解决你的问题,请参考以下文章