Мой запрос выглядит так:
SELECT MAX(x.id) as id,
x.name, x.timestamp, x.balance
FROM sheet x
JOIN
(SELECT p.name,MAX(id) AS max_id, p.rate
FROM sheet p GROUP BY p.name) y
ON y.max_id = x.id
GROUP BY x.name
Как лучше всего запрашивать имя только IN (динамически):
array= ['flake', 'shane', 'klar']
Я пробовал что-то подобное с другим состоянием join() напрасно:
WHERE x.name IN (' + array.join() + ')
Бесполезно использовать список полей выбора, поля отсутствуют в предложении group by. MySql не распознает эту ошибку (получает первую строку группы), но в других сценариях (СУБД) ваш запрос неверен.
@ДжоТарас. Не могли бы вы быть более конкретным и сказать мне, что не так в моем основном запросе (перед оператором where)? Я новичок, и запрос, кажется, может удовлетворить потребности, но мне нужно добавить оператор WHERE для массива.
@mediaroot: Пожалуйста, добавьте образец данных и желаемый набор результатов (как советовал GMB в своем комментарии), чтобы мы могли вам помочь.
Попробуй это :
SELECT MAX(x.id) as id,x.name,x.timestamp,x.balance FROM sheet x JOIN (SELECT p.name,MAX(id) AS max_id,p.rate FROM sheet p GROUP BY p.name) y ON y.max_id = x.id WHERE x.name IN ('flake', 'shane', 'klar') GROUP BY x.name
вы можете это сделать, но желательно использовать подготовленные операторы.
Этот запрос, вероятно, можно оптимизировать. Не могли бы вы предоставить образцы данных и ожидаемые результаты? Кроме того, какую версию MySQL вы используете?