自連線的用法--sql
阿新 • • 發佈:2021-11-30
自連線的用法--sql
自連線是連線的一種用法,但並不是連線的一種型別,因為他的本質是把一張表當成兩張表來使用。
mysql有時在資訊查詢時需要進行對自身連線(自連線),所以我們需要為表定義別名。
-- 建立表 CREATE TABLE products ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), price DOUBLE(6,2) ); -- 新增資料 INSERT INTO products(name,price) VALUES ('蘋果',12), ('香蕉',15), ('梨子',13), ('桃子',14), ('橘子',11);
執行語句
-- 獲取可重排列 有相同元素構成的對 SELECT p1.name AS name1 ,p2.name AS name2 FROM products p1,products p2; -- 也可寫為 SELECT p1.name as name1,p2.name as namem2 FROM products p1 JOIN products p2; -- 執行結果裡每一行(記錄)都是一個有序對。因為是可重排列,所以結果行數為 5^2 = 25 條資料 -- 可排除掉由相同元素構成的對 SELECT p1.name as name1 ,p2.name as name2 FROM products p1,products p2 WHERE p1.name <> p2.name; -- 元素順序的對進行去重 SELECT p1.name as name1 ,p2.name as name2 FROM products p1,products p2 WHERE p1.name < p2.name; -- 組合 SELECT p1.name as name1,p2.name as name2,p3.name as name3,p4.name as name4,p5.name as name5 FROM products p1,products p2,products p3,products p4,products p5 WHERE p1.name > p2.name and p2.name > p3.name and p3.name > p4.name and p4.name > p5.name