Estoy escribiendo un programa MYSQL en C. Quiero eliminar los registros de la base de datos para todos los id_no. almacenados en la matriz. Sé que puedo eliminar todos los registros ejecutando la consulta en el bucle. Pero el problema es que hay muchos registros que quiero eliminar (> 300). Entonces, quería saber si hay otros métodos eficientes que pueda usar.
unit32_t id_nos[100]; char query[256]; for(int i=0; i< 100; i++) { sprintf(query, "DELETE FROM Students WHERE id = '%u'", id_nos[i]); if(mysql_query(con, query)) { printf("Failed to Delete record successfully\n") printf("stderr: %s\n", mysql_error(con)); mysql_close(con); return; } else { printf("Record deleted successfully\n"); }Puede concatenar los identificadores como una cadena y pasar la función "IN" .
Si su identificación se obtiene mediante una consulta anterior, puede usar una eliminación con combinación de esta manera, puede eliminar todas las filas de estudiantes que coincidan con la identificación devuelta por la subconsulta solo con una consulta
DELETE Students FROM Students INNER JOIN ( select id from my_prev_table where my_column = 'my_value' ) t on t.id = Students.id