看板 Database 關於我們 聯絡資訊
我自己找到這個交集運算的方法了 剛剛才找到 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