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