Просто добавьте: вы также получите разные значения для своих размеров.
printf("sizeof s[] = %zu\n", sizeof(s)); //6
printf("sizeof *s = %zu\n", sizeof(s)); //4 or 8
Как уже упоминалось выше, для массива '\0'
будет выделен конечный элемент.
Вы можете присоединиться к обоим и выполнить обновление на основе условия.
UPDATE messages a
INNER JOIN
(
SELECT name , MAX(ReceiveTime) max_time
FROM messages
GROUP BY name
) b ON a.name = b.name AND
a.ReceiveTime = b.max_time
SET a.is_unread = 1
-- WHERE a.name = 'John'
Без условия WHERE
. Он будет обновлять столбец is_unread
для последней записи.
Вы можете попробовать использовать ORDER
и LIMIT
.
Попробуйте это:
UPDATE messages_tbl SET is_unread = 1
WHERE name = 'John'
ORDER BY ReceiveTime DESC
LIMIT 1
Этот запрос обновит строки в порядке самого высокого (последнего) ReceiveTime
до самого низкого (самого старого) ReceiveTime
. Используется совместно с LIMIT
, будет изменено только последнее ReceiveTime
.