子查询返回多于一行。

sql语句:SELECT d.di_Id,d.sl_SerialNumber,(SELECT SUM(pd_Subtotal) FROM tab_purchasedetails WHERE sl_SerialNumber=d.sl_SerialNumber)
 sl_Money,s.s_Name,d.di_Time,(SELECT pd_Name FROM tab_purchasedetails WHERE sl_SerialNumber=sl_SerialNumber) di_Remark FROM
 tab_disbursements d join tab_staff s on d.s_Id=s.s_Id

我百度过了没有解决成功,求大佬帮忙解决一下,万分感谢,非常感谢🙏

1.(SELECT pd_Name FROM tab_purchasedetails WHERE sl_SerialNumber=sl_SerialNumber),后一个sl_SerialNumber是否要明确下对应表。

2.确定tab_purchasedetails针对同一sl_SerialNumber没有重复行。

检查方式:

select * from tab_purchasedetails where sl_SerialNumber in (select sl_SerialNumber from tab_purchasedetails group by sl_SerialNumber     having count (sl_SerialNumber) > 1)

 

一种是你的查询条件不够准确 另一种是你数据有问题

你是不是漏了什么条件??还是数据库就是有两条一样的数据?

 

用left join,吧你的表和数据发出来

SELECT
	d.di_Id,
	d.sl_SerialNumber,
	s.s_Name,
	d.di_Time,
    p.di_Remark,p.sl_Money
FROM
	tab_disbursements d
	JOIN tab_staff s ON d.s_Id = s.s_Id
	left join (select pd_Name as di_Remark,sum(Subtotal) as sl_Money,sl_SerialNumber from tab_purchasedetails)p on p.sl_SerialNumber = d.sl_SerialNumber

不知道你表是怎么样的,试试上面的吧

二楼Mr.DYD不是说得很清楚了吗, (SELECT pd_Name FROM tab_purchasedetails WHERE sl_SerialNumber=sl_SerialNumber)

你这个返回了多行,报错也说得很清楚。