原創聲明:本文為作者原創,未經允許不得轉載,經授權轉載需注明作者和出處
首先先創建數據,運行以下sql:
USE coupletDemo;
CREATE TABLE score(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(5) NOT NULL,
course1 FLOAT NOT NULL, -- 課程1分數
course2 FLOAT NOT NULL, -- 課程2分數
PRIMARY KEY(id)
);
INSERT INTO score (name, course1, course2) VALUES ('小明', 100, 50);
INSERT INTO score (name, course1, course2) VALUES ('小紅', 80, 90);
INSERT INTO score (name, course1, course2) VALUES ('小黑', 60, 40);
INSERT INTO score (name, course1, course2) VALUES ('小剛', 70, 70);
INSERT INTO score (name, course1, course2) VALUES ('小妖怪', 60, 70);
假設這是個分數表,里面有課程1的分數、課程2的分數,如果我們想要查課程1的分數比課程2的分數高的同學,這時候就需要用自聯了。
SELECT s1.* FROM score s1, score s2 WHERE s1.id = s2.id AND s1.course1 > s2.course2;
這樣就行啦。通過語句可以看出,其實這是一個內聯,只不過是score表自己和自己聯表,因此自聯和左聯右聯不一樣,所以單獨開了一張出來沒有和左聯這幾章一起寫。自聯其實是一種聯表的用法,并不是一種聯表方式,原理就是讓一張表自己和自己聯表,聯表的方式可以是內聯,也可以是左聯右聯。自聯的用途也挺廣泛的,除了文中這樣,還有別的場景可以使用,比如有一個職工表,里面有姓名,職位,部門,還有上級id,如果是最高級,上級id是0,以及多級回復等等場景,都可以通過自聯的方式獲取想要的結果。