需要从特定的选定记录中过滤重复记录

时间:2014-10-15 06:01:57

标签: mysql sql

需要从特定选定记录中过滤重复记录

SQL表 site_metatag ,我正在使用 MySQL客户端版本:5.5.30

metatag_id | store_id | name
    1          0        copyright   
    2          0        author  
    3          0        robots  
    4          0        googlebot   
    5          0        revisit-after
    6          0        google-site-verification    
    9          1        google-site-verification    
    8          1        revisit-after
    10         1        googlebot   
    11         1        robots
    12         2        googlebot
    13         2        robots
    14         2        google-site-verification

需要来自store_id1中的0的记录,但name将不会像 distinct()函数给uniqe所有记录,但我需要记录,不使用超过1次

metatag_id | store_id | name
     1         0        copyright   
     2         0        author  
     3         0        robots      

我试试

SELECT * FROM site_metatag v 
where metatag_id NOT IN
(
   select metatag_id from site_metatag p where v.name=p.name
) 
AND v.store_id in (0,1) 

但没有工作..

3 个答案:

答案 0 :(得分:2)

我想你想要这个:

SELECT 
    metatag_id, store_id, `name`
FROM
    site_metatag v
group by `name`

或者,如果你想按出现次数分组(在这种情况下为1 - > cnt = 1)。

SELECT 
    metatag_id, store_id, v.`name`, a.cnt
FROM
    site_metatag v
        inner join
    (select 
        `name`, count(*) as cnt
    from
        site_metatag
    group by `name`
    having cnt = 1) as a ON (v.`name` = a.`name`)
group by v.`name`

答案 1 :(得分:0)

使用distinct()函数。见Distinct MYSQL

答案 2 :(得分:0)

怎么样:

SELECT * FROM site_metatag WHERE v.store_id in (0,1) GROUP BY name