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

时间:2016-01-08 09:46:14

标签: mysql

所以我的桌子有下一个结构:

id | part_id | lang | title | alias | content

所以lang列可以是不同的,例如 lang_1 lang_2 lang_3 等,但内容可以相同。

所以问题是我如何创建一个查询,只比较某些lang的行,例如 lang_2 lang_3 并且具有相同的{{ 1}?然后,如果发现任何内容,则会删除content列中content == * lang_3

内的任何文字

到目前为止,我想出了类似的东西:

lang

2 个答案:

答案 0 :(得分:0)

尝试这样做:

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

答案 1 :(得分:0)

尝试以下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 Fiddle Link

注意:如果您只想更新一种语言,则此SQL查询很有用。