下午好,我是社区的新手,如果我当时做错了问这个问题请纠正我,我将不胜感激。 我有一个表包含两列phone_number名称和状态。
Phone_number status
“9999999999” “A”
我需要删除T1和T2之间的重复项,如果它们具有相同的phone_number,但我想创建具有状态的数字'' A'&#39 ;;
我试图解决这个问题,但是有些东西丢失了,因为它给了我结果不是我想要的。
DELETE t1.*
FROM
tablename t1 INNER JOIN tablename t2
ON t1.phone_number = t2.phone_number
AND t1.status !="A"
有人能帮助我吗?
答案 0 :(得分:0)
我不清楚在T1和T2之间删除"删除"手段。您显然只是试图从示例代码中删除T1。
如果表格的t2中有一行(同一个phone_number,' A'),以下内容将从表格的t1(phone_number,而不是' A')中删除行。如果T1 = T2,那么这将删除T1中与同一电话号码重复的所有行,只留下状态为“A'”的电话号码副本。
从t1删除 其中t1.status!=' A'和 t1.phone_number in(选择phone_number 从t2开始 其中t2.phone_number = t1.phone_number和t2.status =' A');
答案 1 :(得分:0)
如果我理解正确的话,当另一个表的状态为A时,从一个表中删除;如果是这样,那么你需要两个删除:
DELETE t1
FROM
tablename t1 INNER JOIN tablename t2
ON t1.phone_number = t2.phone_number
AND t1.status !='A' AND t2.status='A'
DELETE t2
FROM
tablename t1 INNER JOIN tablename t2
ON t1.phone_number = t2.phone_number
AND t1.status ='A' AND t2.status !='A'
答案 2 :(得分:0)
另一种方法可能是从t1中仅选择不同的行并将它们插入新表中:
CREATE TABLE newtable LIKE `table`;
INSERT INTO `newtable` SELECT DISTINCT * FROM `table`;
之后,您可以适当地重命名两个表。当然,这只有一次意义。