Bueno la cosa es que tengo una tabla con 900 registros los campos originales eran digamos: id, nombre, apellido, edad, género, especialidad. Digamos que se el agrego un campo matricula y cada registro se hiso update a: la primera letra del apellido concatenada con la cadena ‘001’. De modo que si hay 50 personas con la M en el apellido habrá 50 matriculas que digan M001.
La matricula La cual es de la siguiente forma: X999, donde X es la primera letra del apellido y 999 es un número del 001 y va aumentando de 1 en uno. De tal modo que si tengo a los siguientes registros, las matriculas SERIAN :
Pérez Juan P001
Mesa Luis M001
Cota José C001
Trejo Alberto T001
Muños Érica M002
Matías Federico M003
Rulfo miguel R001
Púnica melisa P002
Es decir, la numeración 001-999 comienza con cada letra. Trate de hacer el update con el siguiente código pero no me sale. Mi intención era que en el update en: “set a.matricula” se le asigne el total al primer registro (digamos que avía 50 con al letra M), al segundo como se supone que hay un M050 y 49 M001 se supone que se el agregaría M049. Al 3ero, como hay un M050, un M0949 y cuarenta y ocho M001 quedaría M048 y asi sucesivamente. Pero mi consulta SQL solo hace el COUNT una ves y a todos les pone 50.
La pregunta es: Hay alguna forma de hacer que el SELECT COUNT se haga de nuevo para cada registro?
Código:
de antemano, gracias. update alumno a, ( SELECT matricula FROM ( SELECT id_alumno, correo, ap_paterno, matricula, count( matricula ) AS total FROM alumno GROUP BY matricula ORDER BY total DESC , matricula )t1 WHERE total >1 )m set a.matricula=concat( substr(a.matricula, 1, 4 ), (case when m.total<10 then '00' when m.total<100 then '0' else '' end), m.total ) WHERE a.matricula = m.matricula