选择特定日期之后的不同项

选择特定日期之后的不同项

我有一个包含 3 个表的数据库classesteachertaught

  • 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 行)效果很好。

相关内容