MySQL-将查询更改为仅在一列上是不同的

MySQL-将查询更改为仅在一列上是不同的,mysql,Mysql,我有下面的查询,但我希望它的行为有所不同。现在,它查找url上的所有重复行,并按重复url的数量顺序返回。我使用GROUP_uu_uconcat来分隔所有不同的屏幕名称 但是,可以有多行具有相同的url和相同的屏幕名称。如何使其仅检索屏幕名称不同的行 SELECT url, title, GROUP_CONCAT( screen_name ) , COUNT( t_uid ) FROM `twl_links` WHERE twl_uid =3

我有下面的查询,但我希望它的行为有所不同。现在,它查找url上的所有重复行,并按重复url的数量顺序返回。我使用GROUP_uu_uconcat来分隔所有不同的屏幕名称

但是,可以有多行具有相同的url和相同的屏幕名称。如何使其仅检索屏幕名称不同的行

SELECT url, title, GROUP_CONCAT( screen_name ) , COUNT( t_uid )
            FROM `twl_links`
            WHERE twl_uid =3
            AND timestamp >= NOW( ) - INTERVAL 24 HOUR
            GROUP BY (
            url
            )
            ORDER BY COUNT( t_uid ) DESC

你试过使用distinct关键字吗

编辑:

下面是另一篇文章,展示了distinct可以与group_concat一起使用的位置:


你试过使用distinct关键字吗

编辑:

下面是另一篇文章,展示了distinct可以与group_concat一起使用的位置:


你到底想要什么还不清楚。鉴于这些数据:

t_uid    url                    title           screen_name
1        http://google.com/     Google          bob
2        http://google.com/     Google Search   bob
3        http://google.com/     Google          tom
你期望得到什么样的结果?如果您想要:

http://www.google.com  '???'  'bob,tom'   2
然后,您可以执行SELECT DISTINCT子查询来删除重复项 你把它放在twl_链接的地方

如果你愿意

http://www.google.com  '???'  'bob,tom'   3
然后,您可以使用组CONCATDISTINCT screen\u name来获得该名称

请注意,在所有情况下,返回的标题都是不明确的,除非URL和标题之间存在N:1映射;除非每个URL只有一个不同的标题


仅供参考,由于缺乏规范化,您似乎有一个冗余且难以查询的数据。

您不清楚到底想要什么。鉴于这些数据:

t_uid    url                    title           screen_name
1        http://google.com/     Google          bob
2        http://google.com/     Google Search   bob
3        http://google.com/     Google          tom
你期望得到什么样的结果?如果您想要:

http://www.google.com  '???'  'bob,tom'   2
然后,您可以执行SELECT DISTINCT子查询来删除重复项 你把它放在twl_链接的地方

如果你愿意

http://www.google.com  '???'  'bob,tom'   3
然后,您可以使用组CONCATDISTINCT screen\u name来获得该名称

请注意,在所有情况下,返回的标题都是不明确的,除非URL和标题之间存在N:1映射;除非每个URL只有一个不同的标题


仅供参考,由于缺乏规范化,您似乎有一个冗余且难以查询的数据。

您可以使用如下子查询来限制它:

SELECT t1.url, GROUP_CONCAT( t1.screen_name ) , COUNT( * ) 
FROM (
  SELECT DISTINCT url, screen_name
  FROM mytable
) AS t1
GROUP BY t1.url

它没有给你标题,但是因为标题不在GroupBy中,所以我不太清楚该字段会返回什么。如果您想要这些URL的所有标题,您可以将上述查询与您的表连接起来。

您可以使用如下子查询来限制它:

SELECT t1.url, GROUP_CONCAT( t1.screen_name ) , COUNT( * ) 
FROM (
  SELECT DISTINCT url, screen_name
  FROM mytable
) AS t1
GROUP BY t1.url

它没有给你标题,但是因为标题不在GroupBy中,所以我不太清楚该字段会返回什么。如果您想要这些URL的所有标题,您可以将上面的查询与您的表连接起来。

我有,但这没有什么区别,因为我正在获取URL,并使用GROUP_CONCAT作为屏幕名称。我修改了我的答案,以显示另一篇结合了这两种查询的文章。我想这会给你你想要的。我有,但这没有什么区别,因为我得到的网址和使用组_CONCAT的屏幕名称我修改了我的答案,显示另一篇文章,结合了这两个。我想这会给你想要的。非常感谢。我同意标准化通常是更好的选择,但是这是一个数据只存储24小时然后删除的表。因此,我选择不把URL和标题放在一个单独的表中。非常感谢。我同意标准化通常是更好的选择,但是这是一个数据只存储24小时然后删除的表。因此,我选择不将URL和标题放在单独的表中。