0

我有学校的任务

请显示他们在 1993 年第 11 个月出生的学生姓名

select 
    x.[5_name] 
from
    [5Student] x, [5Birthday] y 
where 
    YEAR(y.[5_date]) = '1993' 
    and MONTH(y.[5_date]) = '11' 
    and x.[5_nim] = y.[5_student]

如果您有其他解决查询的方法,请在此处分享

*可能该代码对某人很重要

4

2 回答 2

3

您当前的WHERE条款是无可争议的。重写为范围查询

WHERE y.[5_date] >= { d '1993-11-01' } AND  y.[5_date] < { d '1993-12-01' }

表示可以使用索引。

于 2012-11-17T11:43:31.970 回答
2

您不是在说您使用什么数据库引擎(SQL = 结构化查询语言 - 只是语言,而不是产品) - 但我建议始终使用新的 ANSI 标准JOIN语法(而不仅仅是列出逗号分隔的表列表使用):

select 
    x.[5_name] 
from
    [5Student] x
inner join
    [5Birthday] y ON x.[5_nim] = y.[5_student]
where 
    YEAR(y.[5_date]) = '1993' 
    and MONTH(y.[5_date]) = '11' 

使您加入的内容更加清晰,并将JOIN条件移动到它所属的位置 - 到JOIN语句中(并且不会将WHERE条件与JOIN条件混淆)。

如今,几乎所有体面的数据库引擎都应该支持这一点

于 2012-11-17T11:38:26.213 回答