2014-01-06 3 views
0

Здравствуйте, я хочу заказать мой запрос с помощью mcap, который находится в запросе, но я получаю ошибку, я искал googled, но не смог найти подходящий решение. Вот запрос:Ошибка в подзапросе MySQL Ошибка ERROR 1242 (21000): Подзапрос возвращает более 1 строки

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; 

но она возвращает ошибку:

ERROR 1242 (21000): Subquery returns more than 1 row 

Не знаю, что пошло не так. Может кто-нибудь мне помочь?

ответ

1

Единственный подзапрос, который не является глобальной агрегации или имеет предел положение является:

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

Я бы предположил, что это возвращается более одной строки.

EDIT:

Как вы его исправить? Это зависит от логики. Вот два способа, которые выглядят разумно для меня:

+0

Я знаю, но как это исправить? –

+0

Да, второй сделал трюк. Благодарю. сначала не логически правильно cal total_share =! sum (total_share), даже при том, что он дает ошибку MySQL, также он породил бы неправильный результат. –

Смежные вопросы