[英]How to remove redundant data in table from SQL query with join in codeigniter
[英]How to remove redundant records in the given table, using SQL
如何使用SQL刪除給定表中的冗余記錄?
FROM | TO | TIME
========================
USA | CHINA | 4
USA | AFRICA | 2
CHINA | USA | 4
CALI | NEWZLND | 3
在這里,“美國到中國”和“中國到美國”是多余的記錄,在決賽桌中我只需要其中一個即可。 我該如何用短語sql查詢呢?
這樣嘗試。
小提琴: http ://sqlfiddle.com/#!9/c3211/2
順便說一句:更改了您的列名。 不要使用諸如FROM,TO和TIME之類的保留字...
CREATE TABLE tbl(FromColumn VARCHAR(100),ToColumn VARCHAR(100),TIMEColumn INT);
INSERT INTO tbl VALUES
('USA','CHINA',4)
,('USA','AFRICA',2)
,('CHINA','USA',4)
,('CALI','NEWZLND',3);
SELECT *
FROM tbl AS tbl
WHERE (SELECT COUNT(*)
FROM tbl AS x
WHERE x.FromColumn>x.ToColumn
AND x.FromColumn=tbl.ToColumn
AND x.ToColumn=tbl.FromColumn
AND x.TIMEColumn=tbl.TIMEColumn
)=0;
聽起來您具有自反的關系,類似於“ Person1是Person2的朋友” –暗示“ Person2是Person1的朋友”,並且您不想存儲兩個記錄。 假設存儲哪一個都沒有關系,則可以刪除重復項。 在這里,我保留了Person1在Person2之前的位置:
CREATE TABLE Friendship(
Person1 varchar(128),
Person2 varchar(128),
PRIMARY KEY(Person1, Person2)
);
DELETE FROM Friendship
WHERE EXISTS(
SELECT *
FROM Friendship as reflex
WHERE Friendship.Person1 = reflex.Person2
AND Friendship.Person2 = reflex.Person1
AND Friendship.Person2 < Friendship.Person2
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.