sql server 查询出现错误,子查询返回值不止一个

img

为什么会出现这个问题啊?该怎么改啊?

原谅我是个笨蛋

为啥正文非得写三十个字符
凑字数小故事:
“你知道月亮叫什么吗?”

“月亮。”

“你知道太阳叫什么吗?”

“太阳。”

“那你知道星星叫什么吗?”

“…星星。”

“那你知道你自己叫什么吗?”

狐狸抬起爪子戳了戳乌鸦的头,顺带揪下几根毛来,恶声恶气:“我不就是骗了你一块肉么,你至于这么纠缠我吗?”

乌鸦不好意思地收起张扬的翅膀怯生生道:“可是猴子说你一直喜欢我哎,它说你今天早上在我的篮子里放了两块新鲜肉……”

狐狸眯着眼睛默不作声,半响悠悠问道:“你问我太阳月亮星星到底想说什么?”

乌鸦咧着嘴笑了笑,“那你知道我叫什么嘛?一听说你喜欢我,就高兴地忘了自己叫什么了。”

img


改成


(select DISTINCT 姓名 from Student where 学号 = @id) != @name 
or (select DISTINCT 学号 from Student where 姓名 = @name) !=@id

试试

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/765766
  • 这篇博客你也可以参考下:【查询表中所有数据,指定字段插入数据,所有字段插入数据,指定字段批量插入数据,所有字段批量插入数据,更新数据,删除数据,备份单个数据库,备份多个数据库,备份所有数据库,不登入和登入后执行SQL文件】
  • 除此之外, 这篇博客: 数据库语句执行过程理解,存储引擎的学习,字符集的理解,加各种sql数据类型理解介绍加之SQL各种数据查询分析和题目专练中的 六.查询这些基本语法是学的差不多点了,可是需要练习呀,接下来请你按照我给的sql文件进行导入数据库,然后请你根据题目进行练习,练完之后最下面有答案. (数据库就是需要操作,小杰初学者小感受) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 第一步,导入数据库:   方式,两种:   
    • 第一种   指定导入:
    • source xxx/test.sql导入sql文件,sql文件实际上是一个脚本文件,里面有多行SQL语句,通过source命令可以批量执行。  (命令导入)

     sql 文件代码:

    	comm		SMALLINT ) ;
    CREATE TABLE IF NOT EXISTS salgrade ( 
    	grade		INT,
    	losal		INT,
    	hisal		INT );
    
    -- 插入测试数据 —— dept
    INSERT INTO dept VALUES	(10,'ACCOUNTING','NEW YORK');
    INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
    INSERT INTO dept VALUES	(30,'SALES','CHICAGO');
    INSERT INTO dept VALUES	(40,'OPERATIONS','BOSTON');
    -- 插入测试数据 —— emp
    INSERT INTO emp VALUES (7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
    INSERT INTO emp VALUES (7499,'ALLEN','SALESMAN',7698,'1981-2-20',1600,300,30);
    INSERT INTO emp VALUES (7521,'WARD','SALESMAN',7698,'1981-2-22',1250,500,30);
    INSERT INTO emp VALUES (7566,'JONES','MANAGER',7839,'1981-4-2',2975,NULL,20);
    INSERT INTO emp VALUES (7654,'MARTIN','SALESMAN',7698,'1981-9-28',1250,1400,30);
    INSERT INTO emp VALUES (7698,'BLAKE','MANAGER',7839,'1981-5-1',2850,NULL,30);
    INSERT INTO emp VALUES (7782,'CLARK','MANAGER',7839,'1981-6-9',2450,NULL,10);
    INSERT INTO emp VALUES (7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
    INSERT INTO emp VALUES (7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
    INSERT INTO emp VALUES (7844,'TURNER','SALESMAN',7698,'1981-9-8',1500,0,30);
    INSERT INTO emp VALUES (7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
    INSERT INTO emp VALUES (7900,'JAMES','CLERK',7698,'1981-12-3',950,NULL,30);
    INSERT INTO emp VALUES (7902,'FORD','ANALYST',7566,'1981-12-3',3000,NULL,20);
    INSERT INTO emp VALUES (7934,'MILLER','CLERK',7782,'1982-1-23',1300,NULL,10);
    -- 插入测试数据 —— salgrade
    INSERT INTO salgrade VALUES (1,700,1200);
    INSERT INTO salgrade VALUES (2,1201,1400);
    INSERT INTO salgrade VALUES (3,1401,2000);
    INSERT INTO salgrade VALUES (4,2001,3000);
    INSERT INTO salgrade VALUES (5,3001,9999);

    新建一个文件命名为test.sql   将上述拷贝进去,导入执行上述语句创建数据库即可

    • 以下回答由chatgpt基于相关博客总结生成:

      根据提供的信息,问题是在使用SQL Server查询时出现了“子查询返回值不止一个”的提示,需要修改这个问题。这可能是由于在查询语句中,子查询返回了多行数据,导致了这个错误。以下提供两种可能的解决方案:

      解决方案一:重新设计子查询,在确保返回单个数据行的情况下,修改查询语句。

      解决方案二:将子查询转换为联接查询,使用JOIN子句代替子查询。具体步骤如下:

      Step 1: 创建两个表,一个是主表,一个是从表。例如,创建名为“Orders”的主表和名为“Customers”的从表,让“Orders”表有一个CustomerId的外键,指向“Customers”表的主键,以建立两个表之间的联系。

      Step 2: 使用联接查询,将这两个表连接起来。在这种情况下,使用INNER JOIN子句是最好的选择,因为每个订单都必须有对应的客户。

      例如,下面的查询将返回每个订单的OrderId,OrderDate,CustomerName和CustomerEmail:

      SELECT Orders.OrderId, Orders.OrderDate, Customers.CustomerName, Customers.CustomerEmail FROM Orders INNER JOIN Customers ON Orders.CustomerId = Customers.CustomerId;

      解释:该查询使用INNER JOIN将“Orders”表与“Customers”表连接。连接使用“ON”子句指定,里面是一个条件,用于匹配“Orders”表中的“CustomerId”列与“Customers”表中的“CustomerId”列。并且查询只返回“Orders”表中的“OrderId”和“OrderDate”列,以及“Customers”表中的“CustomerName”和“CustomerEmail”列。

      注意:如果您的查询涉及多个表,那么您需要编写复杂的联接查询语句,以确保返回正确的数据。需要检查外键和主键之间的关系,并且确保为联接查询中的每个表指定正确的别名(如果需要)。

      希望这些信息对您有所帮助,如果需要更多帮助,请提供更具体的信息。