我试图删除数据库中的某些行,并且我阻止了我的请求。我要删除这些行的表格如下:
在这个例子中,我必须删除行号。 1和5。 请求必须是这样的,行是msg_id组中的最后一行(相同的msg_id)。最后一个由" A"给出。要删除此行,请在同一组msg_id中,以及同一个msg_id的行之间," B"必须具有相同的价值,但" D"必须是不同的。我希望我的解释清楚。
感谢您的帮助
答案 0 :(得分:0)
您可以尝试这样的事情:
DELETE
FROM my_table AS tab1
WHERE EXISTS (SELECT *
FROM my_table tab2
WHERE tab1.msg_id = tab2.msg_id
AND tab1.A > tab2.A
AND tab1.B = tab2.B
AND tab1.C <> tab2.C)
AND NOT EXISTS (SELECT *
FROM my_table tab3
WHERE tab1.msg_id = tab3.msg_id
AND tab1.A < tab3.A
AND tab1.B = tab3.B
AND tab1.C <> tab3.C);