我有一个 SQL 表,其中包含 ID、链接(超链接)、类别和时间戳等数据。
结果应该是一个 SQL 查询,它返回一个指定链接一天中存在的频率。这基本上意味着我必须执行一个 SQL 查询来计算链接的 ID 和组。
但是没有任何原因这不起作用...... 这就是我的 SQL 表的样子:
但是当我执行这个简单的 SQL 查询时:
SELECT COUNT(ID) AS Anzahl, DAY(STR_TO_DATE(datum, '%Y-%m-%d')) AS Datum, link as URL
FROM 4184_lead_tracking
WHERE datum >= '2017-12-01' AND datum <= '2017-12-31'
GROUP BY link
ORDER BY DAY(datum) ASC`
你看。他正在将这两个链接合并为一个:
https://radlvoo.de/blog/produkt/haibike-seet-hardfour-life-1-0-2016-rh-groesse-30/
https://radlvoo.de/blog/produkt/haibike-seet-hardfour-life-1-0-2017-rh-groesse-30/
但它们是不同的。一张是 2016 年的,一张是 2017 年的……他为什么要这样做?我怎样才能正确地将它们分组?
我将不胜感激任何形式的帮助! 亲切的问候
最佳答案
无论如何,您还应该按天分组(因为不参与聚合函数),或者不要在 SELECT 中使用该字段,因为它只能包含 GROUP 中(许多)不同行的一个值:
SELECT COUNT(ID) AS Anzahl, DAY(STR_TO_DATE(datum, '%Y-%m-%d')) AS Datum, link as URL
FROM 4184_lead_tracking
WHERE datum >= '2017-12-01' AND datum <= '2017-12-31' GROUP BY link, Datum
ORDER BY DAY(datum) ASC
否则,对于未参与分组依据且未参与聚合函数的列,您可能会获得不可预测的结果。详细了解 GROUP BY
in MySQL 的处理和 SQL Mode ONLY_FULL_GROUP_BY
关于MySQL 不会按链接分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48102152/