【问题标题】:SQL QUERY Error :subquery returns more than one rowSQL QUERY 错误:子查询返回多于一行
【发布时间】:2013-09-07 12:17:17
【问题描述】:

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

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

它显示以下错误:

ERROR 1242 (21000):子查询返回多于 1 行

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

【问题讨论】:

    标签: sql database linux


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      相关资源
      最近更新 更多