Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL在名称列上查找公共值_Mysql_Sql_Join_Group By - Fatal编程技术网

MYSQL在名称列上查找公共值

MYSQL在名称列上查找公共值,mysql,sql,join,group-by,Mysql,Sql,Join,Group By,我有一个mysql表,其中有一个字段name,可能有如下常见条目 name --- abc abc.com 我想选择所有公共值,我已将查询写在下面: select * from table group by name having count(*) >= 2; 这里,名称基本上是服务器主机名。因此,根据定义,我只需要比较 因此,server与server.abc.com 我选择了0行,看起来不正确 select name, count(name) from (select sub

我有一个mysql表,其中有一个字段
name
,可能有如下常见条目

name
---
abc
abc.com
我想选择所有公共值,我已将查询写在下面:

select * from table
group by name having count(*) >= 2;
这里,名称基本上是服务器主机名。因此,根据定义,我只需要比较
因此,
server
server.abc.com
我选择了0行,看起来不正确

select name, count(name) 
  from (select substring(name, 1, 
               if(position("." in name)=0,
                 length(name),
                 position("." in name)-1) 
               ) name
         from table) t1
  group by name 
  having count(name) >= 2;

如果需要所有条目,请删除RDM中的“having count(name)>=2”

,这些不是重复的值。数据库正在比较匹配的字符串,并且
'abc'!='abc.com'
。我假设您想要检查多个URL,而不考虑顶级域(
.com
.org
,等等)。要做到这一点,我们可以在最后一个时段之前获取URL

select 
  substr(
    name
    , 0
    , locate('.', reverse(name))
  )
  , count(*) 
from 
  table
group by 
  substr(
    name
    , 0
    , locate('.', reverse(name))
  ) 
having count(*) >= 2;

上面的代码将忽略域,但子域(
news.abc.com
videos.abc.com
等)或协议指示符(
http
https
等)可能仍然存在问题。如果您需要的话,我会把它们作为练习留给您。

据我所知,您的问题我创建了一个查询,它可能会对您有所帮助。
因为您没有显示正确的数据库结构,所以我在一个表中创建了相同的场景,并据此创建了查询。
例如:

从城市c1内部连接城市c2中选择计数(c1.城市名称)作为总计 关于c1.city_名称,如CONCAT(“%”,c2.city_名称,“%”)分组方式 c1.总数大于1的城市id


试试这样的东西,这是oracle的工作

select * from(
SELECT a.name, count(b.id) duplicates  FROM  table a,table b 
WHERE a.name LIKE CONCAT(b.name, '%')
group by a.name
) where duplicates >=2

abc和abc.com是否被视为重复?您需要详细说明“重复”的定义,因为
abc
abc.com
通常不被视为相同的值