Вы были близки. Различные базы данных имеют слегка различный синтаксис при обновлении из select / join. Думайте о MySQL как о выражении select и используйте псевдоним первичной таблицы, которую вы пытаетесь обновить, и после этого идут предложения SET.
Итак, сначала я начну с самостоятельного написания запроса SELECT.
select
CI.Tag_No,
AI.Reader_ID,
AI.Area,
MIN( TL.TimeStamp ) MinTime,
MAX( TL.TimeStamp ) MaxTime
from
customer_info CI
join tag_logs TL
CI.tag_no = TL.tag_no
join aisle_info AI
on TL.Reader_ID = Reader_ID
WHERE
CI.tag_no = 515988190124
group by
CI.Tag_No,
AI.Reader_ID,
AI.Area
Так что это дает нам окончательные результаты того, что вы хотите, и вы можете подтвердить это при необходимости.
Затем примените ваше обновление, например
update Customer_Info CIUpd
JOIN
( select
CI.Tag_No,
AI.Reader_ID,
AI.Area,
MIN( TL.TimeStamp ) MinTime,
MAX( TL.TimeStamp ) MaxTime
from
customer_info CI
join tag_logs TL
CI.tag_no = TL.tag_no
join aisle_info AI
on TL.Reader_ID = Reader_ID
WHERE
-- notice your filter is HERE for the one tag_no you want to update
-- and will result with only this on TAG_NO set of values returned
CI.tag_no = 515988190124
group by
CI.Tag_No,
AI.Reader_ID,
AI.Area ) FirstQuery
-- the JOIN will ensure updating only on that one tag_no
ON CIUpd.Tag_No = FirstQuery.Tag_No
set
CIUpd.Reader_ID = FirstQuery.Reader_ID,
CIUpd.Area = FirstQuery.Area,
CIUpd.Max_TimeStamp = TimeStampDiff( second, FirstQuery.MinTime, FirstQuery.MaxTime )
Теперь это не идеальный ответ, поскольку ваш исходный запрос не был правильным запросом с использованием контекста MIN () / MAX (). При выполнении агрегированного запроса вам необходимо применить группу по всем NON агрегированным столбцам. В этом случае вы не уточнили какие-либо соображения группы относительно Reader_ID и Area, которые МОГУТ привести к нескольким строкам из ваших таблиц tag_logs и aisle_info.
Если информация о проходе будет все время одинаковой для данного Tag_No, тогда это просто, просто пропустите группировку по этому и измените значения извлечения этих столбцов как MAX () каждый. если они никогда не изменятся, MAX () или даже MIN () всегда будут возвращать одно и то же значение и не будут иметь проблем с агрегированным запросом без неагрегированных столбцов.
Если вы можете предоставить дополнительные разъяснения данных, цели и т. Д., Пожалуйста, отредактируйте исходное сообщение, оставив только комментарий. Затем оставьте комментарий для меня, пожалуйста, обзор с обновленной информацией.