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_1、lang_2、lang_3等,但内容可以相同
所以问题是,我如何进行一个查询,只比较某些lang
行,例如lang\u 2和lang\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查询很好