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

我们有一个带有两个列名称和标记的表。根据该表编写一个查询,该查询返回的分数例如,如果分数大于700,则小于等于700,大于500,则为“ A”,或者为“ 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


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

最佳答案

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。

关于sql - SQL查询错误:子查询返回多个行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18606241/

10-13 08:24
查看更多