Seleccionando parte de un campo con una expresión regular

Tengo una tabla donde un componente de terceros almacena las URL, me gustaría obtener solo elid parámetro de esta url.

Con PHP puedo hacerlo así:

$subject = "index.php?option=com_content&catid=2&id=456&view=article"; //mysql query result
$pattern = '*[&?]id=([0-9]+)*'; //matches either ?id=456 or &id=456
preg_match($pattern, $subject, $matches);
echo $matches[1];//prints 456

El número coincidente sería parte de una nueva consulta:

SELECT name FROM table1 WHERE id=the_match

Ahora, creo que sería mucho más rápido hacerlo directamente a través de mysql, algo así como

SELECT name FROM table1 WHERE id = (SELECT REGEX_MATCH('*[&?]id=([0-9]+)*', '$1') FROM table2 WHERE uniquefield1 = 'fred')

ObviamenteSELECT REGEX_MATCH('*[&?]id=([0-9]+)*', '$1') FROM table2 WHERE uniquefield1 = 'fred') está completamente inventado, solo para decir que quiero seleccionar el primer grupo que coincida con expresiones regulares y usarlo para hacer elWHERE cláusula de trabajo.

¿Es posible hacer algo como esto con MySQL?

Respuestas a la pregunta(2)

Su respuesta a la pregunta