Я отправляю запрос SQL от клиента к базе данных MySQL. Когда я запускаю запрос в MySQL, результат правильный.
Результат запроса неверен при отправке от клиента. Последнее предложение WHERE отсутствует.
Исходный запрос выглядит так:
SELECT SUM(Second_In_State) From
(SELECT
Time_Stamp,
State,
TIMESTAMPDIFF(SECOND, LAG(Time_Stamp) OVER(ORDER BY Time_Stamp), Time_Stamp)
AS Second_In_State
FROM db.xyz_1_state
ORDER BY Time_Stamp) AS T
Where State = 1;
Результат - количество секунд, где State = 1 (желаемый результат)
В журнале запросов MySQL запрос выглядит так:
SELECT SUM(Second_In_State) From
(SELECT
Time_Stamp,
State,
TIMESTAMPDIFF(SECOND, LAG(Time_Stamp) OVER(ORDER BY Time_Stamp), Time_Stamp)
AS Second_In_State
FROM db.xyz_1_state
ORDER BY Time_Stamp) AS T
Результат - общее количество секунд во всех состояниях. (Неправильный результат)
Есть предложения, почему отсутствует последняя строка?
Каков твой вопрос ? не могли бы вы предоставить некоторые данные samlpe и ожидать результата?
Я попытался немного лучше объяснить проблему. У меня вопрос: почему отсутствует последняя строка, когда запрос отправляется от клиента?
Попробуйте сделать свой последний Where в верхнем регистре (WHERE), если есть небольшая вероятность, что это проблема. Я не ожидаю, что это произойдет, но в зависимости от вашей настройки и среды есть небольшая вероятность, что причина в этом.
«Я отправляю запрос SQL от клиента» - какой клиент (командная строка mysql?)? 'to mysql' - где (тот же сервер, удаленный сервер)
Я немного подробнее рассмотрел проблему. И нашел журнал клиента. Клиент не отправляет последнюю строку запроса в строке подключения. Заказчик - Machine SCADA Expert. Я должен связаться с их службой поддержки.






Спасибо за ваши комментарии.
Я обнаружил, что клиент ограничен по количеству строк. Так что при сохранении последняя строка удаляется.
Таким образом, преобразование запроса в одну строку решило проблему.
Спасибо.
Предполагая, что выходным данным вашего журнала можно верить, единственный способ увидеть версию запроса с отсутствующим предложением
WHERE- это если ваш код выполняет этот же запрос.