Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

239
Visualizações
¿Cómo se pueden reordenar los registros de MySQL por una determinada columna de forma permanente?

Usaré un ejemplo para esto.

Digamos que estoy tomando fuentes RSS, revisando sus elementos y almacenando información sobre cada elemento en una base de datos. Estoy usando SimplePie para procesar las fuentes y el envoltorio MySQLi de Josh Campbell para las acciones de la base de datos.

Para cada entrada, guardaré el título del elemento, la hora en que se publicó el elemento (recuperado de la fuente), la hora en que se agregó el elemento a mi base de datos (definido en el momento de la inserción en la base de datos) y una ID de incremento automático asignado a cada uno.

 function process_rss($rss_url) { require_once './feed-parser/vendor/autoload.php'; $feed = new SimplePie(); // some feed processing logic here $items = $feed->get_items(); $data = array(); foreach ($items as $item) { $data[] = array( 'name' => $item->get_title(), 'published' => $item->get_date(), 'created' => time() ); } $insert = ... // db insert query with the $data array if ($insert) { return 'Imported'; } else { return 'Try again...'; } }

Ahora supongamos que ejecuté esta función 3 veces con 3 fuentes diferentes, y se procesó e insertó un total de 7 elementos en la base de datos. Se insertan en el orden en que se procesaron, por lo que mi tabla quedaría de la siguiente manera:

 ID | Name | Published | Created ---------------------------------------- 1 | Track 1 | 1595147815 | 1594986945 2 | Track 2 | 1594996785 | 1594986945 3 | Track 3 | 1595146567 | 1594986945 4 | Track 4 | 1594996598 | 1594986945 5 | Track 5 | 1594996096 | 1594986945 6 | Track 6 | 1594986545 | 1594986945 7 | Track 7 | 1594986609 | 1594986945

Lo que quiero hacer ahora es ordenar esa tabla por la columna published de forma permanente (en lugar de ordenar mientras obtengo las entradas de la base de datos).

Tomando el ejemplo anterior, la salida deseada se vería así:

 ID | Name | Published | Created ---------------------------------------- 6 | Track 6 | 1594986545 | 1594986945 7 | Track 7 | 1594986609 | 1594986945 5 | Track 5 | 1594996096 | 1594986945 4 | Track 4 | 1594996598 | 1594986945 2 | Track 2 | 1594996785 | 1594986945 3 | Track 3 | 1595146567 | 1594986945 1 | Track 1 | 1595147815 | 1594986945

Al examinar las respuestasproporcionadas aquí , se indica que el uso de ALTER y ORDER BY no mantendrá los cambios en las nuevas inserciones. ¿Cómo haría para lograr esto?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

¿Cómo se pueden reordenar los registros de MySQL por una determinada columna de forma permanente?

No puedes hacer eso™. En serio. Y te arrepentirás si lo intentas.

En serio, las filas en las bases de datos SQL no tienen un orden inherente. Si no especifica ORDER BY en su consulta, el servidor puede devolver el conjunto de filas que solicitó en el orden que desee. Si los obtiene en un orden particular que de alguna manera coincide con sus expectativas, es una coincidencia afortunada.

A medida que crecen las tablas, las bases de datos SQL a veces comienzan a utilizar diferentes formas de acceder a ellas. Y, sin ninguna especificación ORDER BY, esas diferentes formas de acceder a ellos pueden generar diferentes ordenaciones. Por lo tanto, si necesita un pedido en particular pero no lo especifica, en algún momento de la vida de su aplicación, el orden cambiará. Cuando no te lo esperas. Y sus usuarios de repente quedarán desconcertados por resultados extraños.

Utilice ORDER BY .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda