注册 登录
编程论坛 SQL Server论坛

sql语句错误

solution 发布于 2007-08-12 17:02, 879 次点击
请写出在class和stu表中查找满足如下条件的记录的sql语句:
1)表class中的字段c_id与stu表中的s_cid为关联字段
2)返回字段 c_name,s_no,s_name
3)查询条件 c_stu 字段值大于20,并且s_no第二到四位是"006"这三个字符
4)查询结果按s_no倒排序
注:因为两个表中的字段没有重名,因此写本条SQL语句时字段名前不用加表名

答案如下:SELECT c_name,s_no,s_name FROM class,stu WHERE c_id=s_cid AND c_stu>20 AND s_no LIKE "?006*" ORDER BY s_no DESC

我不知道哪错了。请各位帮忙。

[此贴子已经被作者于2007-8-12 17:03:25编辑过]

7 回复
#2
西风独自凉2007-08-12 18:33
SELECT c_name,s_no,s_name FROM class,stu WHERE c_id=s_cid AND c_stu>20 AND substring(s_no,2,4)='006' ORDER BY s_no DESC
#3
sky_yang_sky2007-08-13 13:55
像下面這樣就可以了
SELECT c_name,s_no,s_name FROM class,stu WHERE c_id=s_cid AND c_stu>20 AND s_no LIKE '_006%' ORDER BY s_no DESC
#4
潇洒老乌龟2007-08-13 15:02

请写出在class和stu表中查找满足如下条件的记录的sql语句:
1)表class中的字段c_id与stu表中的s_cid为关联字段
2)返回字段 c_name,s_no,s_name
3)查询条件 c_stu 字段值大于20,并且s_no第二到四位是"006"这三个字符
4)查询结果按s_no倒排序
注:因为两个表中的字段没有重名,因此写本条SQL语句时字段名前不用加表名

答案如下:SELECT c_name,s_no,s_name FROM class,stu WHERE c_id=s_cid AND c_stu>20 AND s_no LIKE "?006*" ORDER BY s_no DESC

我不知道哪错了。请各位帮忙。

select c_name,s_no,s_name from class , stu where class.c_id = stu s_cid and c_stu > 20 and substring(s_no,2,3) = '006' order by s_no DESC

#5
solution2007-08-13 20:53
正确答案: SELECT c_name,s_no,s_name from class,stu where c_id=s_cid and c_stu>20 and s_no like '?006*' order by s_no desc
这样就行了.
没注意把 like后面"".
大家受累了!呵呵,伤大家眼睛了.不好意思!
谢谢各位了!
#6
西风独自凉2007-08-13 21:06
汗了。。。。。
其实没什么。。论谈本来就是个解决问题的地方。。。。
你提出这个问题。。。或许以后就有人因为你提的这个问题
而不出相同的错误。。。大家都学习了..呵呵
#7
lzalibabalr2007-08-14 09:57

你上面用的用是Acess吧 ,通配符用的是*号

#8
solution2007-08-27 13:58

用的是SQL,我查出错误了,是因为输出8条记录,而我的记录只有四条.

1