sql语句两张表嵌套查询.doc
文本预览下载声明
sq?l语句两张表嵌套查询
?篇一:
sq?l子查询 嵌套SEL?EC?T语句 sq?l子查询 嵌套SEL?EC?T语句 嵌套SE?LE?CT?语句也叫子查询,一个 S?EL?EC?T ?语句的查询结果能够作为另一个语句的输入值。子查询不但能够出现在Whe?re?子句中,也能够出现在fr?om?子句中,作为一个临时表使用,也能够出现在se?le?ct? l?is?t中,作为一个字段值来返回。
?1、单行子查询 :
单行子查询是指子查询的返回结果只有一行数据。当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, ?, ?, ?=,? =?, ?)来进行比较。
例:
se?le?ct? e?na?me?,d?ep?tn?o,?sa?l ?fr?om? e?mp? w?he?re? d?ep?tn?o=?(s?el?ec?t ?de?pt?no? f?ro?m ?de?pt? w?he?re? l?oc?= ?NE?W ?YO?RK? )?;
2?、多行子查询:
多行子查询即是子查询的返回结果是多行数据。当主查询语句的条件语句中引用子查询结果时必须用多行比较符号(IN,AL?L,?AN?Y)来进行比较。其中,IN的含义是匹配子查询结果中的任一个值即可( IN? 操作符,能够测试某个值是否在一个列表中),AL?L则必须要符合子查询的所有值才可,ANY?要符合子查询结果的任何一个值即可。而且须注意AL?L ?和ANY? 操作符不能单独使用,而只能与单行比较符(=、 、 、 = ?、 = ?、 )结合使用。
?例:
1?).多行子查询使用IN操作符号例子:
查询选修了老师名叫Ro?na?(假设唯一)的学生名字 sq?l ?se?le?ct? s?tN?am?e ?fr?om? S?tu?de?nt? w?he?re? s?tI?d ?in?(s?el?ec?td?is?ti?nc?t ?st?Id? f?ro?m ?sc?or?e ?wh?er?e ?te?Id?=(?se?le?ct? t?eI?d ?fr?om? t?ea?ch?er? w?he?re? t?eN?am?e=? R?on?a ?查询所有部门编号为A的资料:
S?EL?EC?T ?en?am?e,?jo?b,?sa?l ?FR?OM? E?MP? W?HE?RE? d?ep?tn?o ?in? (? S?EL?EC?T ?de?pt?no? F?RO?M ?de?pt? W?HE?RE? d?na?me? L?IK?E ?A%? )?; 2).多行子查询使用AL?L操作符号例子:
查询有一门以上的成绩高于Kak?a的最高成绩的学生的名字: ?sq?l ?se?le?ct? s?tN?am?e ?fr?om? S?tu?de?nt? w?he?re? s?tI?d ?in?(s?el?ec?t ?di?st?in?ct? s?tI?d ?fr?om? s?co?re? w?he?re? s?co?re? a?ll?(s?el?ec?t ?sc?or?e ?fr?om? s?co?re? w?he?re? s?tI?d=?(s?el?ec?t ?st?Id? f?ro?m ?St?ud?en?t ?wh?er?e ?st?Na?me?= ?Ka?ka? )? )?);? 3?). 多行子查询使用AN?Y操作符号例子:
查询有一门以上的成绩高于Kak?a的任何一门成绩的学生的名字:s?ql? s?el?ec?t ?st?Na?me? f?ro?m ?St?ud?en?t ?wh?er?e ?st?Id? i?n(?se?le?ct? d?is?ti?nc?t ?st?Id? f?ro?m ?sc?or?e ?wh?er?e ?sc?or?e ?an?y(?se?le?ct? s?co?re? f?ro?m ?sc?or?e ?wh?er?e ?st?Id?=(?se?le?ct? s?tI?d ?fr?om? S?tu?de?nt? w?he?re? s?tN?am?e=? K?ak?a ?))?);?
?3、多列子查询:
当是单行多列的子查询时,主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, ?, ?, ?=,? =?, ?)来进行比较;当是多行多列子查询时,主查询语句的条件语句中引用子查询结果时必须用多行比较符号(IN,AL?L,?AN?Y)来进行比较。
?例:
S?EL?EC?T ?de?pt?no?,e?na?me?,j?ob?,s?al? F?RO?M ?EM?P ?WH?ER?E ?(d?ep?tn?o,?sa?l)? I?N ?(S?EL?EC?T ?de?pt?no?,M?AX?(s?al?) ?FR?OM? E?MP? G
显示全部