【问题标题】:Mysql 5.6.12 Group_concat with Inner Join IssueMysql 5.6.12 Group_concat 与内部连接问题
【发布时间】: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了。相同的查询返回所有列为空的行。

请帮忙?

【问题讨论】:

    标签: mysql inner-join mysql-error-1064 group-concat


    【解决方案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 应该只导致在两个表中都有条目的记录。 (所以它在最新版本中修复了:)
    猜你喜欢
    • 2017-07-07
    • 2012-09-24
    • 2015-02-25
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    相关资源
    最近更新 更多