MySQL子查询错误1242(21000):子查询返回多行

MySQL子查询错误1242(21000):子查询返回多行,mysql,sql,Mysql,Sql,您好,我想通过mcap对我的查询进行排序,该查询在查询中,但我遇到了错误,我在谷歌上搜索过,但找不到合适的解决方案。问题是: SELECT c.code, (e.total_value - IFNULL((SELECT total_value FROM eod_stock WHERE company_id = e.company_id AND entry_date = SELECT entry_date FROM eod_stock WHERE entry_date < e

您好,我想通过mcap对我的查询进行排序,该查询在查询中,但我遇到了错误,我在谷歌上搜索过,但找不到合适的解决方案。问题是:

SELECT 

 c.code,
(e.total_value - 
IFNULL((SELECT total_value FROM eod_stock WHERE company_id = e.company_id AND entry_date =  

SELECT 
entry_date FROM eod_stock WHERE entry_date < e.entry_date AND company_id = e.company_id ORDER  

BY entry_date DESC LIMIT 0,1)),0))/

(SELECT total_value FROM eod_stock WHERE company_id = e.company_id AND entry_date = (SELECT entry_date FROM eod_stock WHERE entry_date < e.entry_date AND company_id = e.company_id ORDER BY entry_date DESC LIMIT 0,1)) AS turnover_growth,

(SELECT total_share FROM share_percentage WHERE company_code = c.code) * e.ltp AS mcap,

'' AS pe

 -- ,e.*

FROM eod_stock AS e

LEFT OUTER JOIN company AS c

ON c.ID = e.company_id

WHERE e.company_id AND e.entry_date = (SELECT MAX(entry_date) FROM eod_stock)

ORDER BY mcap DESC

LIMIT 0,10;

不知道出了什么问题。有人能帮我吗?

唯一不是全局聚合或具有limit子句的子查询是:

(SELECT total_share FROM share_percentage WHERE company_code = c.code)
我猜这会返回不止一行

编辑:

你怎么修理它?这取决于逻辑。在我看来,有两种方法是合理的:

(SELECT sum(total_share) FROM share_percentage WHERE company_code = c.code)

(SELECT total_share FROM share_percentage WHERE company_code = c.code limit 1)

我知道,但怎么能修好呢?是的,第二个修好了。谢谢第一个在逻辑上不正确cal total_share=!sum(total_share),即使它给出MySQL错误,也会生成错误的结果。
(SELECT sum(total_share) FROM share_percentage WHERE company_code = c.code)

(SELECT total_share FROM share_percentage WHERE company_code = c.code limit 1)