el último viernes del mes en MySQL

Hola. ¿Cómo puedo obtener la fecha del último viernes del mes actual con mysql?

Gracias por adelantado

editar. Hola stefan Esto es lo que he hecho

set @ldom = dayofweek(last_day(curdate()));
select 
case
when @ldom = 7 then last_day(curdate()) - interval 1 day
when @ldom = 6 then last_day(curdate())
when @ldom = 5 then last_day(curdate()) - interval 6 day 
when @ldom = 4 then last_day(curdate()) - interval 5 day 
when @ldom = 3 then last_day(curdate()) - interval 4 day
when @ldom = 2 then last_day(curdate()) - interval 3 day
else last_day(curdate()) - interval 2 day
end as last_friday

pero me gustaría saber si hay una forma más inteligente.

EDITAR. Hice algunas bases de prueba sobre la respuesta de samplebias para encontrar el último lunes, martes, etc. de un mes específico.

Estas son las consultas correctas.

-- last sunday of month
set @data = '2011-04-01'; 
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data)) - 6) % 7),"%Y%m%d") -- 2011-04-24

-- last saturday
set @data = '2011-04-01'; 
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data)) - 5) % 7),"%Y%m%d") -- 2011-04-30

-- last friday
set @data = '2011-04-01'; 
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data)) - 4) % 7),"%Y%m%d") -- 2011-04-29

-- last thursday
set @data = '2011-04-01'; 
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data)) - 3) % 7),"%Y%m%d") -- 2011-04-28

-- last wednesday
set @data = '2011-04-01'; 
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data)) - 2) % 7),"%Y%m%d") -- 2011-04-27

-- last tuesday
set @data = '2011-04-01'; 
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data)) - 1) % 7),"%Y%m%d") -- 2011-04-26

-- last monday
set @data = '2011-04-01'; 
select str_to_date(last_day(@data) - ((7 + weekday(last_day(@data))) % 7),"%Y%m%d") -- 2011-04-25

Espero que ayude a alguien más. Gracias de nuevo a samplebias. ;)

Respuestas a la pregunta(2)

Su respuesta a la pregunta