我有一个包含 3 个表的数据库classes
:teacher
和taught
:
类
- ID(类别编号)
- 标题(类别类型)
- 成本(课程成本)
老师
- 唯一整数(教师编号)
教
- classNum(外键)
- 教师编号 (外键)
- 日期字段 (classdate)
我需要用 SQL 编写一个查询,返回自 2015 年 8 月 6 日以来开设的唯一课程列表,按费用从高到低排序
我会为此使用 distinct 吗?获取所有唯一结果或利用外键。
这会有用吗?
答案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)) 作为 DateTime);
通过将日期转换为浮点数并截断“时间”部分(即浮点数的小数),可以从日期中删除时间。
看起来有点笨重,但对于我全天反复使用的大型数据集(约 100,000 行)效果很好。