1. 程式人生 > 其它 >自連線的用法--sql

自連線的用法--sql

自連線的用法--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

圖例