DECLARE is permitted only inside a BEGIN ... END compound statement and must be at its start, before any other statements.https://dev.mysql.com/doc/refman/8.0/en/declare.html
SELECT DISTINCT
LAST_VALUE(`name`) OVER `win` AS `last_name`,
LAST_VALUE(`dateism`) OVER `win` AS `last_dateism`,
`idshare`
FROM `table`
WINDOW `win` AS (
PARTITION BY `idshare`
ORDER BY `dateism`
RANGE BETWEEN UNBOUNDED PRECEDING
AND UNBOUNDED FOLLOWING
)
`rank`
. SELECT `p`.`name` AS `pub_name`, `c`.`media_url` AS `cover_url`
FROM (
SELECT DISTINCT `publication_id`
FROM `tbl_publication_media`
WHERE `media_type` = 2
) AS `v`
JOIN `tbl_publication` AS `p`
ON `p`.`id` = `v`.`publication_id`
LEFT JOIN `tbl_publication_media` AS `c`
ON `c`.`publication_id` = `p`.`id` AND `c`.`media_type` = 4
INSERT INTO `table` (`id`, `date`, `message`)
(
SELECT `t`.`id`, `t`.`date`, `t`.`message`
FROM (SELECT :id AS `id`, :date AS `date`, :message AS `message`) AS `t`
JOIN (SELECT MAX(`date`) AS `date` FROM `table`) AS `m`
WHERE `t`.`date` > `m`.`date`
)