查询被减少到仍然产生错误的最少部分。只是为了解释的目的。
SELECT
s.Saison,
t.Saison,
IF(s.Saison = t.Saison,'gleich','unterschiedlich')
FROM tbl_spielplan s
LEFT JOIN
(SELECT
Kino_Id,
Saison,
(SUM(Besucher_Zahlend+Besucher_Frei)/COUNT(*)) AS Summe_T
FROM
tbl_spielplan
WHERE
Film_gezeigt='1'
GROUP BY
Kino_Id,
Saison) AS t
ON s.Kino_Id = t.Kino_Id
WHERE
Film_Id = '3109'
AND s.Kino_Id < 300
AND s.Saison = t.Saison;
没有找到匹配项。如果我省略 s.Saison = t.Saison 我得到
赛松 | t.Saison | if 子句匹配 |
---|---|---|
2019智慧 | 2019智慧 | 格莱希 |
2019智慧 | 2019 SoSe | 非席德利希 |
2019智慧 | 2018智慧 | 非席德利希 |
如果我仅在 s.Saison = t.Saison 上匹配,则连接有效,但如果我在 where 子句中添加 s.Kino_Id = t.Kino_Id,它将失败。现在对于非常奇怪的部分,如果我添加 AND BINARY s.Saison = t.Saison; 在 on 或 where 子句中问题停止了。也不是所有的数据集都会产生这个错误。我在 mariadb 10.3 和 10.5 的多个实例中对其进行了测试。这种行为是新的,半年前查询每次都有效。在 Mariadb 10.1 中,查询正常工作。
我已经找到了一种解决方法,我更感兴趣的是为什么,在我的理解中,这不应该发生。