Что я хочу сделать, это SUM столбца, но и COUNT количество строк, которое он суммирует, с пределом не более 5 строк. Так что мой запрос:MySQL COUNT с LIMIT
SELECT COUNT(*), SUM(score) FROM answers WHERE user=1 LIMIT 5
Что я ожидал назад был COUNT (*) до 5 (я не могу только предположить, что всегда будет 5 в моей логике коды, как это может иметь менее чем 5 ответов), с сумма баллов до 5 рядов.
Вместо этого я, кажется, вернусь, это общее количество совпадающих строк (где пользователь равно 1) как счетчик и сумма баллов для этих строк. Числа DonT изменить поставил ли я LIMIT 1 или LIMIT 5 или даже 50. ОГРАНИЧЕНИЕ
Что я считаю, будет работать в этой ситуации это вместо
SELECT COUNT(*), SUM(score) FROM (SELECT * FROM answers WHERE user=1 LIMIT 5) AS a
Но это кажется немного запутанным для такого простого запроса , и, поскольку он находится в сценарии с высоким трафиком, я не буду настолько совершенным, насколько это возможно.
Я что-то не хватает? Я нашел этот отчет об ошибках несколько лет назад, который, похоже, связан с этой «проблемой» http://bugs.mysql.com/bug.php?id=50005, но я предполагаю, что это не ошибка?
'LIMIT 5' вернет максимум 5 строк. 'SELECT COUNT (*), SUM (оценка) ОТ ответов' вернет 1 строку. 1 <5. У вас это правильно во втором запросе. –
Yep @ ta.speot.is, думаю, мне просто нужен был кто-то, чтобы проверить, что я не делал что-то глупое. Возможно, он поклялся, что есть более простой запрос сделать то, что мне нужно, но, очевидно, нет. – Lee
с использованием 'select 1' вместо' select * 'в вложенном запросе теоретически может привести к меньшему использованию памяти. –