SQL查询,用于显示1993年出生的学生,11

SQL查询,用于显示1993年出生的学生,11,sql,Sql,我收到学校的任务 请出示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] 如果您有其他解决问题的方法,请在此处共享 *可能这段代码对某人很重要你没有说你使用的数据库引擎(SQL=结

我收到学校的任务

请出示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]
如果您有其他解决问题的方法,请在此处共享


*可能这段代码对某人很重要

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

使您加入的内容更清晰,并将
join
条件移动到它所属的位置-到
join
语句中(并且不会将
where
条件与
join
条件弄乱)


现在,几乎所有像样的数据库引擎都应该支持这一点,但我建议始终使用新的ANSI标准
JOIN
语法(不只是列出要使用的以逗号分隔的表列表):

使您加入的内容更清晰,并将
join
条件移动到它所属的位置-到
join
语句中(并且不会将
where
条件与
join
条件弄乱)


现在几乎任何一个像样的数据库引擎都应该支持这个

您当前的
WHERE
子句是不可组织的

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

其中y.[5_日期]>={d'1993-11-01'}和y.[5_日期]<{d'1993-12-01'}

表示可以使用索引。

您当前的
WHERE
子句无法组织。正在作为范围查询重写

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

其中y.[5_日期]>={d'1993-11-01'}和y.[5_日期]<{d'1993-12-01'}


表示可以使用索引。

为什么生日在一个单独的表中?什么是
[5\u date]
的数据类型?除了连接两个表之外,没有其他方法。如果将这两个字段放在一个表中,则会是另一种情况。为什么生日在一个单独的表中?
[5\u date]的数据类型是什么
?除了连接两个表之外,您没有其他方法。如果您将这两个字段放在一个表中执行此任务,那将是另一种情况,我们不能像内部连接一样使用查询。您有其他方法吗?@Man:为什么没有?!?@Man:告诉您的老师,他应该根据ANSI/ISO标准教您正确的SQL…嘿嘿…冷静@m我要告诉你们的是,他的老师会生气的。很多老师,特别是学校级别的老师,如果学生介绍了一些老师没有说的东西,如果老师当时甚至不知道的话,就会生气,哦,我的上帝D@Sami:是的,但是那些老师是“生产”的所有那些在日常工作中甚至不能正确编写SQL的开发人员…(对不起,我的宠物气…)对于这个任务,我们不能使用像内部连接这样的查询。你有其他方法吗?@Man:为什么不?!?@Man:告诉你的老师他应该根据ANSI/ISO标准教你正确的SQL…嘿嘿…冷静点@marc_s。我想告诉你,他的老师会生气的。如果学生提出一些问题,很多老师特别是学校级别的老师会生气关于老师的事,我并没有告诉老师,即使老师当时也不知道,哦,我的上帝D@Sami:是的-但是那些老师是那些在日常工作中甚至不能正确编写SQL的开发人员的“制造者”…(对不起-我的宠物气…)谢谢。这个查询将显示他们在1993年出生,从11月到12月。WHERE y y.[5_date]>={d'1993-11-01'}和y.[5_日期]<{d'1993-11-31'}@Man-11月只有30天。我用
<'1993-12-01'
代替
谢谢。这个查询将显示他们在1993年11月到12月出生。其中y.[5_日期]>={d'1993-11-01'}和y.[5_日期]<{d'1993-11-31'}@男人-十一月只有30天。我用
<'1993-12-01'
代替