Mysql 如何找到具有相同内容的所有行,并使用特殊条件从其中一行中删除内容?

Mysql 如何找到具有相同内容的所有行,并使用特殊条件从其中一行中删除内容?,mysql,Mysql,所以我有一个表,它有下一个结构: id | part_id | lang | title | alias | content 因此lang列可以不同,例如lang_1、lang_2、lang_3等,但内容可以相同 所以问题是,我如何进行一个查询,只比较某些lang行,例如lang\u 2和lang\u 3,并且具有相同的内容?然后,如果找到任何文本,它将删除content列中lang=*lang\u 3 到目前为止,我想出了这样的办法: select * from mytab

所以我有一个表,它有下一个结构:

id | part_id | lang | title | alias | content
因此lang列可以不同,例如lang_1lang_2lang_3等,但内容可以相同

所以问题是,我如何进行一个查询,只比较某些
lang
行,例如lang\u 2lang\u 3,并且具有相同的
内容
?然后,如果找到任何文本,它将删除
content
列中
lang
=*lang\u 3

到目前为止,我想出了这样的办法:

select 
    *
from
    mytable
where
    lang like 'lang_2'
        or lang like 'lang_3' and content != ''
        and content in (select 
            content
        from
            mytable
        group by content
        having count(*) > 1);
尝试这样做:

UPDATE myTable
set content = NULL
from myTable A
inner join myTable AA on A.content = AA.content
where A.lang = 'lang_3'

请尝试以下SQl查询:

UPDATE MYTABLE MT1
INNER JOIN MYTABLE MT2
ON MT1.ID != MT2.ID AND MT1.CONTENT = MT2.CONTENT
SET MT1.CONTENT = NULL
WHERE MT1.LANG = 'lang_1'

注意:如果只想更新一种类型的语言,此SQL查询很好