乙個表與自身進行連線,稱為自連線
問題的提出:乙個網友提出這樣乙個sql題目,說自己想了很久沒解決,我一看,這不是很簡單嗎
可是自己在查詢分析器除錯了半天原來問題並不是那不簡單
有乙個學生表,裡面有 學號 功課編號
學生成績三個欄位.用乙個sql查詢語句得出每門功課成績最好的前兩名
學號 功課編號 學生成績
1 1 99
2 1 98
3 1 100
4 2 88
5 2 87
6 2 88
7 3 99
8 3 88
9 3 100
解決方法
select distinct 學生表1.*
from 學生表 學生表1 inner join
學生表 學生表2 on 學生表1.學號 in
(select top 2 學生表.學號
from 學生表
where 學生表.功課編號 = 學生表1.功課編號
order by 學生成績 desc)
查詢結果
學號 功課編號 學生成績
1 1 99
2 1 98
4 2 88
6 2 88
7 3 99
9 3 100
查詢不同課程成績相同的學生的學號、課程號、學生成績
MySQL 自聯結 自連線
例如想於下方表中找出與在 愛藝奇 公司的客戶同名的顧客。第一步 找出在 愛藝奇 的客戶的姓名,第二步 從全表中去查詢姓名與第一步查詢出來一樣的客戶 where cust name in in 不能寫成 不然容易報錯。因為子查詢有可能返回的是多條記錄。這跟子查詢只能返回單列無關,單列與單行。子查詢 s...
SQL學習之高階聯結 自聯結 自然聯結 外聯接
這是講解所需要的sql指令碼 一 自聯結 如下 select from customers 現在有個需求,需要給tom同一公司的所有會員傳送一條郵件。分析下基本思路,首先根據tom找到其所在的公司名,在根據公司名找到其公司民下的所有會員。下面是解決 select from customers whe...
mysql 表的聯結
聯結是一種機制,用來在一條select語句中關聯表,因此稱之為聯結。聯結的建立非常簡單,規定要聯結的所有表以及它們如何關聯即可 對多個表都具有的列名,為了避免二義性需要使用完全限定列名。目前為止所用的聯結稱為等值聯結 equijoin 它基於兩個表之間的相等測試。這種聯結也稱為內部聯結。其實,對於這...