我自己找到這個交集運算的方法了
剛剛才找到
SELECT * FROM course
WHERE (`teacher`,`year`) in ( SELECT `teacher`,max(`year`) FROM course GROUP
BY `teacher`)
感謝版上各位高手的提醒
※ 引述《dowbatw (Dowbatw)》之銘言:
: 各位高手好
: 之前有一個問題,提出後被版主砍文
: 之後思考了一下
: 還是想不出答案
: 所以還是要來這邊求救
: 以下是原本的問題
: ======================================================================
: 目前我有一個老師課程的資料表,裡面的資料如下
: id coursename teacher year
: --------------------------------------------
: 1 A 甲 2008
: 2 B 甲 2008
: 3 C 甲 2007
: 4 D 甲 2007
: 5 E 乙 2007
: 6 F 乙 2007
: 7 G 乙 2006
: 8 H 乙 2006
: 我的目標是要得出每位老師最新年度所開的所有課程
: 也就是如下資料
: id coursename teacher year
: --------------------------------------------
: 1 A 甲 2008
: 2 B 甲 2008
: 5 E 乙 2007
: 6 F 乙 2007
: =====================================================================
: 結果回傳
: 以下是我的看法:
: 我想是不是需要先從表格裡面取出每一筆「teacher對應year」的資料
: 然後將這個資料和「全部的資料」作交集運算?
: 但MYSQL似乎沒有這種INTERSECT的運算方法
: 是不是會用where的方式,或者是用having,或者用一些subquery方式
: 因為group by將會使得每一個teacher都只會出現一筆相對應的資料
: 也就是說group by使得每一個teacher註定只會出現一次
: 可是where又不知道怎麼指定
: 因為他並不是統一的條件
: 並不是每一筆資料都對應同一個year
: 不知道版上哪位高手能提供我思考的方向?
: 功力太弱了
: 感激不盡!
--
“The philosophers have only interpreted the world, in various ways. The point,
however, is to change it.”
Karl Marx "Theses on Feuerbach" (1845), Thesis 11
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.199.84