这提示我们查询结果中满足条件 where staff_vs_group.emp_no = staff_dict.emp_no and rownum=1 的记录不止一条,甚至可能有多条记录。尽管使用了 distinct 关键字,它仅能去除同一字段内的重复值,并不会影响到其他不同字段的内容。select into 语句使用的是隐式游标,意味着它只能将单一的数据项赋值给指定的变量,无法处理多行数据。当在查询语句中添加了 rownum=1 时,实际上是限定结果集为仅第一行数据,因此确保不会有其他不同的内容。这个问题的解决方法之一是重新审视并调整查询条件,确保每个 emp_no 对应的记录在 staff_vs_group 和 staff_dict 表中只有一个。可以通过增加额外的筛选条件或使用其他聚合函数来实现。另一种可能的解决方案是使用子查询来获取每条记录的唯一标识,比如通过添加一个 MIN(rowid) 或其他合适的字段来确保每次查询返回的都是符合条件的第一行。此外,还可以考虑使用 ROW_NUMBER() 窗口函数来对结果进行排序和编号,然后选择 ROW_NUMBER()=1 的行,这样可以更精确地控制返回结果的唯一性。总之,解决这个问题的关键在于确保查询条件的精确性和唯一性,避免出现多行记录满足相同条件的情况。