MySQL子查询错误1242(21000):子查询返回多行
您好,我想通过mcap对我的查询进行排序,该查询在查询中,但我遇到了错误,我在谷歌上搜索过,但找不到合适的解决方案。问题是: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
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)