自最新更新以来,我收到此错误消息:
无法运行查询:SQLSTATE[42000]:语法错误或访问冲突:1055 SELECT 列表的表达式 #2 不在 GROUP BY 子句中,并且包含非聚合列“表...”,该列在功能上不依赖于 GROUP BY 子句中的列; 这与 sql_mode=only_full_group_by 不兼容
我已阅读有关此问题的内容,我可以找到的线程是删除模式“only_full_group_by”
现在,这是最佳做法,还是应该更改我的代码?
如果我喜欢使用 mySQL 默认值,我的查询看起来如何?
询问
$query = "SELECT es.datum, es.objekt_element, es.anteckn, es.objekt_nr
FROM element_skanning es
INNER JOIN
(
SELECT objekt_element, anteckn, MIN(datum) AS min_datum
FROM element_skanning
WHERE datum LIKE '$this_year_month'
GROUP BY objekt_element
HAVING COUNT(*) > 1
)
dup ON es.objekt_element = dup.objekt_element
ORDER BY dup.min_datum, es.objekt_element, es.datum;
";
您可以通过简单地anteckn
从SELECT
内部查询列表中删除来修复您的查询。该值未使用,因此不会影响您的结果:
$query = "SELECT es.datum, es.objekt_element, es.anteckn, es.objekt_nr
FROM element_skanning es
INNER JOIN
(
SELECT objekt_element, MIN(datum) AS min_datum
FROM element_skanning
WHERE datum LIKE '$this_year_month'
GROUP BY objekt_element
HAVING COUNT(*) > 1
)
dup ON es.objekt_element = dup.objekt_element
ORDER BY dup.min_datum, es.objekt_element, es.datum;
";
请注意,您还需要包括
es.datum = dup.min_datum
在您的JOIN
条件中,如果(如它所示)您只想获取element_skanning
对应于datum
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句