sql语句的问题关于sql select case语句

access 数据库连接查询SELECT语句问题。
access 数据库连接查询SELECT语句问题。
还是那个Students 和Teachers 的数据库,在上一部的基础上,如果要查询每位教师的姓名以及所教学生的最低分、最高分和平均分,SQL要怎么写呢?
问题出在哪里?
MIN(Students.分数)
在两个表Students 和Teachers 中,我要建立一个连接查询,要查询学号、姓名、教师、分数四项,SQL该怎么写呢?
SELECT students.学号,students.姓名,first (teachers.姓名) AS 教师,students.分数FROM students, teachersWHERE teachers.教师号=students.教师号group by students.学号
问题在哪?
这儿不用group by语句
SELECT students.学号,students.姓名,first (teachers.姓名) AS 教师,students.分数FROM students, teachersWHERE teachers.教师号=students.教师号
这个行不通啊。该怎么办呢?
你用这句试一下:
SELECT students.学号,students.姓名,teachers.姓名 AS 教师,students.分数FROM students, teachersWHERE teachers.教师号=students.教师号
的感言:灰常感谢。
其他回答 (2)
最小函数名称写错了,应该是MIN,不是MIX。
SQL 中 有 MIX 函数吗?&
取最小值& 应该是&MIN
把代码中 MIX& 换成 MIN
相关知识等待您来回答
编程领域专家
& &SOGOU - 京ICP证050897号使用SQL中SELECT语句的使用条件逻辑
如果使用CASE表达式直接在SELECT语句中执行条件逻辑,可以解决使用数据库中的一些问题,下面将为您示例分析,供您参考:
&&& 在SELECT语句中对数值进行IF-ELSE操作。例如,要产生一个结果集,如果一个员工的工资小于等于$2000,就返回消息UNDERPAID,如果大于等于$4000,就返回消息OVERPAID,如果在两者之间,就返回OK。结果集应如下所示:
----------
----------
----------
&&& 使用CASE表达式直接在SELECT语句中执行条件逻辑。
select ename,sal,
case when sal &= 2000 then 'UNDERPAID'
when sal &= 4000 then 'OVERPAID'
end as status
&&& CASE表达式可以针对返回值执行条件逻辑。可以给CASE表达式取别名,以返回更易读的结果集。在本解决方案中,给CASE表达式取的别名是STATUS。ELSE子句是可选的,如果没有使用ELSE,对于不满足判断条件的行,CASE表达式会返回NULL。
顶一下(0) 踩一下(0)
热门标签:&re: SQL 精妙语句(确实牛!)&&&&
假设表a,ID字段为id,&得到表中最小的未使用的ID号&貌似这样写更简单(可能效率会低点)
select min(id+1) from (select id from a)as a1 where id not in(select id-1 from a)
&re: SQL 精妙语句(确实牛!)&&&&
回复:
select * into b from a where 1&&1
我怎么用不来呀
ERROR ): Undeclared variable: b
如果能用那真是太好了
我在MYSQL中如下试用成功:
create table b as select * from a where 1&&1
请试一下
&re: SQL 精妙语句(确实牛!)&&&&
才看到……
呵呵,胡兄弟少了Create语句
于兄弟的SQL应该用得比我好,这是转载的,不过其实这里sql的子查询语句只是为了获得原表的结构,如果需要的只是某些列也可以将*改为那些列的名字。
复制表的某些列也可以使用这样的方法:
create table b as select a.id, a.name, a.
&re: SQL 精妙语句(确实牛!)&&&&
还是你写的那个是对的......我这个少算了一种情况......
手比脑子动作的快,肯定是会出错的,汗........
select min(id+1) from a where id not in(select id-1 from a);
这样子大多数情况都适用,但是唯独当缺失的ID为1的时候,不适用了.会返回&除1以外最小的缺失ID&,而不返回1.
所以单独判断一下子这个id=1是不是存在,就是你上面说的那种办法了...
select (case when exists(select id from a where id=1) then min(id+1) else 1 end) from a where id not in(select id-1 from a);
现在看来,这种方法应该是最优的办法了,就MySQL-4.1.x来说.
&re: SQL 精妙语句(确实牛!)&&&&
看来于大哥是个SQL高手,呵呵,对SQL的理解很深刻
给了另一种解法,让小弟开了眼界
只是我觉得这样做的话会加大SQL的开销,似乎没有必要。
有个问题请教,假设我现在有两个表,表结构一样,但里面有些数据不一样,如果我想要将这两个表中不一样的部分输出到第三个表中,怎么写SQL?
&re: SQL 精妙语句(确实牛!)&&&&
假设表a,b,c,均有字段val,把a和b中不一样的部分输入到c中,似乎可以这样做:
b里面有a里面没有的--&输入进c:
insert into c(val) select val from a where val not in (select val from b);
a里面有b里面没有的--&输入进c:
insert into c(val) select val from b where val not in (select val from a);
合起来大概是这样:
insert into c(val) select val from a where val not in (select val from b) union select val from b where val not in (select val from a);
阅读排行榜当前访客身份:游客 [
当前位置:
数据库版本:SQL2005,由于条件限制,只能写成一条SQL查询语句,数据是根据类型分开存入不同的表,表结构相似,求帮忙。 TB1表结构如下:
TB2表结构与TB1一样:
两张表根据num筛选出startDate最小值,endDate最大值,aReading最小值,bReading最大值,sumVal是合计值,结果如下表:
startDate (小)
endDate (大)
aReading (小)
bReading (大)
sumVal (合)
共有3个答案
<span class="a_vote_num" id="a_vote_num_
两张表结构union一下,然后以num分组,然后min(startDate),max(endDate)...,sum(sumVal)不就可以了么?
<span class="a_vote_num" id="a_vote_num_
看下表 UNION 的知识 就知道怎么写了
<span class="a_vote_num" id="a_vote_num_
谢谢两位,主要开始还有几张表字段不一样,我用别名改变了下:
select a,b,c,d from
select a,b,c,d from TB1
union all select a,b,c,d TB2
union all select a,b, null as 'c', abc as 'd' from TB3
left join TB6 on(TB6.a = t.a)
group by a
更多开发者职位上
有什么技术问题吗?
itranch...的其他问题
类似的话题}

我要回帖

更多关于 sql 嵌套select语句 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信