我有一个名为 monitor_links 的表格,其中包含以下列:
https://www.evanmiller.org/how-not-to-sort-by-average-rating.html
此表用于存储来自其他网站的链接。我使用此查询获取这些链接:
SELECT title, url
FROM monitor_links
WHERE id_domain = 5
GROUP BY url
ORDER BY date_created asc
使用该查询,我从存储链接返回标题和URL(其中id_domain等于5)。但在我的情况下,可以存在具有相同 url 的行,并且不会使用GROUP BY url
返回相同的重复 url 。 (如果存在多个具有相同网址且id_domain = 5的行,则我的代码只返回其中一行)。
问题是我收到以下错误:
SELECT列表的表达式#1不在GROUP BY子句中并且包含 nonaggregated column' shuri.monitor_links.title'不是 功能上依赖于GROUP BY子句中的列;这是 与sql_mode = only_full_group_by'。
不兼容
有些人说我可以尝试禁用only_full_group_by
,但我想修复查询而不是静音警告。
答案 0 :(得分:3)
您可以使用ANY_VALUE
函数告诉MySQL您要在组内返回任何值。
SELECT ANY_VALUE(title) AS title, url
FROM monitor_links
WHERE id_domain = 5
GROUP BY url
这实际上相当于暂时为此查询关闭ONLY_FULL_GROUP_BY
。
答案 1 :(得分:1)
如果您希望每title
个url
,则:
SELECT MAX(title) as title, url
FROM monitor_links
WHERE id_domain = 5
GROUP BY url ;
如果您想要最新版本:
SELECT ml.*
FROM monitor_links ml
WHERE ml.created_date = (SELECT MAX(ml2.created_date)
FROM monitor_links ml2
WHERE ml2.url = ml.url AND ml2.id_domain = ml.id_domain
);