Si vous n'utilisez pas un ancien MySQL, vous pouvez l'envelopper dans une fonction stockée.
CREATE FUNCTION `LastMonday`() RETURNS DATETIME
RETURN DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) ;
puis appelez
select LastMonday() as LastMonday
Mise à jour :
Si vous rencontrez des problèmes de performances, vous pouvez conserver la valeur dans une variable de session. De cette façon, vous pouvez être sûr qu'il ne sera calculé qu'une seule fois.
set @LastMonday=LastMonday();
select @Lastmonday;
(dans cette requête simple, cela ne fait aucune différence bien sûr...)