2016-05-12 73 views
0

everyone!我试图写一个查询来查找内容的副本并设置除原始文章以外的所有副本(原始文章将由计数器定义(,如果原始帖子的计数器大于其他所有副本计数器,则是原始)并设置在数据库激活= 0。选择并更新同一查询并找到重复项目

DB achitecture{id, title (varchar), description(varchar), img(varchar), active(int)} 

为找到重复

SELECT posts.title, posts.counter, posts.id 
    FROM posts 
    INNER JOIN (
    SELECT title 
    FROM posts 
    GROUP BY title 
    HAVING count(title) > 1 
) duplicates ON posts.title = duplicates.title 
    ORDER BY posts.title; 

我需要设置有效= 0的重复 怎么做下面的查询?

回答

1

你可以很容易与JOIN把它变成一个UPDATE

UPDATE posts INNER JOIN 
     (SELECT title, MAX(counter) as maxcounter 
     FROM posts 
     GROUP BY title 
     HAVING count(title) > 1 
     ) duplicates 
     ON posts.title = duplicates.title AND posts.counter < maxcounter 
    set posts.active = 0; 
+0

它的作品,非常感谢你。 – ATIKON