Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

202
Vistas
MySQL 5.1 a 5.7 cambio de orden por ya no funciona

Tengo un problema con MySQL al crear una variable de contador SOrder basada en un orden establecido definido por order by. Estaba trabajando en MySQL 5.1 pero actualmente no en 5.7. La consulta original en 5.1 tenía el orden de las subconsultas y era aceptable para los estándares en ese entonces. En 5.7 con el modo only_full_group_by desactivado, agregué el orden por en el exterior, pero incluso cuando el orden por dentro de la subconsulta se comentó (o se ignoró de acuerdo con los estándares de SQL), generó SOrder como si fuera aleatorio pero no basado en Column Carrier, ANTERIOR, método de envío, modelo único.

 SELECT Carrier, PRIOR, ShipMethod, GroupOrder, @row_no:=IF(@prev_val = ANY_VALUE(t.SingleModel), @row_no, @row_no + 1) AS 'SOrder', SingleModel, COUNT(t.SingleModel) AS 'SingleModelTotQty', @prev_val:=ANY_VALUE(t.SingleModel) FROM (SELECT CASE WHEN ANY_VALUE(W.hdr_user_defined_field18) LIKE '%Fedex%' THEN 'FEDEX' ELSE 'UPS' END AS 'Carrier', CASE WHEN ANY_VALUE(W.hdr_user_defined_field20) IN ('16' , '26', '45', '88', '96') OR ANY_VALUE(W.hdr_user_defined_field20) IN ('19' , '21', '22', '23', '24', '44', '76', '77', '78') THEN 'PRIOR' ELSE 'NORM' END AS 'PRIOR', CASE WHEN ANY_VALUE(W.hdr_user_defined_field20) IN ('88' , '96', '80', '97') OR ANY_VALUE(W.hdr_user_defined_field20) IN ('76' , '77', '78', '79') OR ANY_VALUE(W.`Ship-To Location`) != '' THEN 'S2S' ELSE 'S2H' END AS 'ShipMethod', CASE WHEN SUM(Quantity) = 1 THEN 'Single' WHEN SUM(Quantity) > 1 AND COUNT(`PO Number`) = 1 THEN 'Multiple' WHEN COUNT(`PO Number`) > 1 THEN 'Mixed' END AS 'GroupOrder', CASE WHEN SUM(Quantity) = 1 THEN `Supplier Item Nbr` WHEN SUM(Quantity) > 1 AND COUNT(`PO Number`) = 1 THEN ' ' WHEN COUNT(`PO Number`) > 1 THEN ' ' END AS 'SingleModel', `PO Number` AS 'PONUM', CASE WHEN SUM(Quantity) = 1 THEN ' ' ELSE SUM(Quantity) END AS 'QtyPerMulPO' FROM dropship.Walmart_FullPOs W WHERE ProcessedDate = CURDATE() - 5 GROUP BY `PO Number` **ORDER BY Carrier , PRIOR DESC , ShipMethod , GroupOrder DESC , SingleModel DESC** ) t, (SELECT @row_no:=0) x, (SELECT @prev_val:='') y WHERE GroupOrder = 'Single' GROUP BY Carrier , PRIOR , ShipMethod , SingleModel ORDER BY t.Carrier , t.PRIOR DESC , t.ShipMethod , t.GroupOrder DESC , t.SingleModel DESC

ResultadoResultado

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Hay un problema con su sql_mode .

A partir de MySQL 5.7.x, el modo sql predeterminado incluye ONLY_FULL_GROUP_BY . (Antes de 5.7.5, MySQL no detecta la dependencia funcional y ONLY_FULL_GROUP_BY no está habilitado de manera predeterminada).

ONLY_FULL_GROUP_BY : se rechazarán las consultas de agrupación no determinista

Para más detalles consulte la documentación de sql_mode

Método 1:

Compruebe el valor predeterminado de sql_mode:

 SELECT @@sql_mode

Elimine ONLY_FULL_GROUP_BY de la consola ejecutando la siguiente consulta:

 SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

Método 2:

Acceda a phpmyadmin para editar su sql_mode

  • Inicie sesión en phpmyadmin y abra localhost
  • Arriba en Variables presentes en la parte superior de los elementos del menú y busque el modo sql
  • Haga clic en el botón editar para eliminar ONLY_FULL_GROUP_BY y guardar configuración del modo sql en phpmyadmin
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda