使用Select MySQL我有一个非常奇怪的问题。
这是查询。但是,我已经简化了很多次。这对你来说似乎很愚蠢,我简化它只是为了保留错误:
SELECT
(
SELECT
IF(
(
SELECT
SUBSTRING(ed2.numero2, 1, 1)
FROM
ecriture_detail ed2
WHERE
ed2.ecriture_id = ed1.ecriture_id
LIMIT
0, 1
) = 6,
SUM(1),
SUM(1)
)
FROM
ecriture_detail ed1
INNER JOIN
compte s_c ON s_c.id = ed1.compte_id
INNER JOIN
association_detail s_ad ON s_ad.ecriture_detail_id = ed1.id
WHERE
ed1.compte_id = c.id
AND ed1.ecriture_id = e.id
) AS amount,
c.id AS c_order
FROM
compte c
INNER JOIN ecriture_detail ed ON
c.id = ed.compte_id AND
ed.date_suppression IS NULL
INNER JOIN ecriture e ON
ed.ecriture_id = e.id
LEFT JOIN association_detail ad ON
ad.ecriture_detail_id = ed.id
LEFT JOIN association a ON
a.id = ad.association_id
WHERE
c.activite_id IN("66", "67", "68", "69", "144") AND
SUBSTRING(c.numero, 1, 1) = "4" AND
(
a.complet != 1
OR a.complet IS NULL
) AND
SUBSTRING(c.numero, 13, 6) != "000000"
HAVING
amount != 0
ORDER BY
c_order ASC
你能帮助我吗?
答案 0 :(得分:0)
虽然这个问题记录为一个错误(https://bugs.mysql.com/bug.php?id=58081),但在日志中有一个有趣的注意事项:
[2015年7月16日2:43] Yoseph Phillips
我已经看到使用MySQL 5.6.25发生了同样的错误。我在这里工作 原因是GROUP BY中使用的列的损坏索引 子句(使用该索引进行简单选择不会返回 行,使用其他索引将返回行)。
因此,可能会检查是否涉及某些索引,如果是,您可以尝试重新索引它们。