我的学校有任务
请显示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]
如果您有其他解决方法,请在此处分享
*该代码可能对某人很重要
答案 0 :(得分:3)
您当前的WHERE
条款无法解决。重写为范围查询
WHERE y.[5_date] >= { d '1993-11-01' } AND y.[5_date] < { d '1993-12-01' }
表示可以使用索引。
答案 1 :(得分: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
条件混乱条件)。
现在几乎任何体面的数据库引擎都应该支持。