SQL QUERY错误:子查询返回多行

时间:2013-09-04 05:46:34

标签: sql database linux

我是SQL和DATABASE学习的新手,试图解决以下数据库问题:

我们有一个包含两个列名和标记的表。根据此表写一个查询,如果大于700,则返回等级,如果小于700且大于500则返回'A',它将是'B'或它将是'C'。主点表只有两列。

  

以下是查询:

CREATE TABLE class (name varchar(20),marks int); 
INSERT INTO class VALUES ("anu",1000),("abhi",100),("mittal",800),("chanchal",1200),("gurpreet",750),("somesh",1000),("sonia",600),("khushbu",450),("rashi",1100),("jyoti",550); 
Select * FROM class; 

显示如下表:

| name     | marks | 

| anu      |  1000 | 

| abhi     |   100 | 

| mittal   |   800 | 

| chanchal |  1200 | 

| gurpreet |   750 | 

| somesh   |  1000 | 

| sonia    |   600 | 

| khushbu  |   450 | 

| rashi    |  1100 | 

| jyoti    |   550 |

SELECT * FROM class where Grade =(SELECT CASE WHEN marks >700 THEN "A" WHEN marks<700 and marks<700 THEN "B" ELSE "C" END as GRADE FROM class); 

显示以下错误:

  

错误1242(21000):子查询返回超过1行

需要最后一个命令的帮助。

1 个答案:

答案 0 :(得分:0)

select name , 
CASE WHEN marks >700 THEN 'A' WHEN marks<700 and marks<700 THEN 'B' ELSE 'C' END as GRADE
from class

上述查询应满足您的需求,这将根据您设置的标准显示名称和成绩。 我希望通过SQL你的意思是Sql Server。