我有一個包含 3 個表格的資料庫:classes
、teacher
和taught
:
類別
- ID(類號)
- 標題(類別類型)
- 費用(班級費用)
老師
- 唯一整數(teacherNum)
教過的
- classNum(外鍵)
- TeacherNum(外鍵)
- 日期欄位(班級日期)
我需要用 SQL 編寫查詢,該查詢將返回自 2015 年 8 月 6 日以來教授的獨特課程列表,按從最貴到最便宜的順序排序
我會為此使用不同的嗎?獲得所有獨特的結果或利用外鍵。
這行得通嗎?
答案1
是的,比如:
SELECT DISTINCT *
FROM classes
WHERE ID IN
(SELECT classNum FROM taught WHERE date = CONVERT(...,Aug 6 2015 ))
ORDER BY cost ASC
答案2
我使用了以下構造...
CAST(FLOOR(CAST(@date as FLOAT)) as DateTime);
這透過將日期轉換為浮點數並截斷「時間」部分(即浮點數的小數)來從日期中刪除時間。
看起來有點笨重,但在我整天重複使用的大型資料集(約 100,000 行)上效果很好。