Maison > base de données > tutoriel mysql > Comment puis-je utiliser les équivalents de fonction ANY_VALUE() dans MySQL 5.6 ?

Comment puis-je utiliser les équivalents de fonction ANY_VALUE() dans MySQL 5.6 ?

DDD
Libérer: 2024-11-28 18:37:11
original
919 Les gens l'ont consulté

How Can I Use ANY_VALUE() Function Equivalents in MySQL 5.6?

Fonction ANY_VALUE et compatibilité MySQL

La version 5.6 de MySQL ne dispose pas de la fonction ANY_VALUE, introduite dans MySQL 5.7. Cela présente un défi pour les développeurs utilisant la fonction ANY_VALUE dans les versions plus récentes de MySQL mais travaillant avec 5.6 dans des environnements de production.

Mode et compatibilité SQL

Le mode ONLY_FULL_GROUP_BY de MySQL empêche les requêtes. comme celui présenté dans la question, qui récupère les colonnes qui ne sont pas incluses dans la clause GROUP BY. La désactivation de ce mode permet à la requête de s'exécuter dans MySQL 5.6 :

SET @mode := @@SESSION.sql_mode;
SET SESSION sql_mode = '';
/* your query here */
SET SESSION sql_mode = @mode;
Copier après la connexion

Cependant, il convient de noter que cette approche n'est pas recommandée car elle peut produire des résultats indéterminés. La fonction ANY_VALUE renvoie une valeur sélectionnée aléatoirement dans le groupe, ce qui peut entraîner une confusion et des problèmes de support.

Requête alternative pour MySQL 5.6

Pour obtenir des résultats prévisibles, envisagez de modifier la requête pour sélectionner une image spécifique pour chaque pays. Si la table images contient une colonne d'ID à incrémentation automatique, la requête suivante peut être utilisée :

SELECT c.id, c.name, i.*
  FROM countries c
  LEFT JOIN (
       SELECT MIN(id) id, country_id
         FROM images
        GROUP BY country_id
       ) first ON c.id = first.country_id
  LEFT JOIN images i ON first.id = i.id
Copier après la connexion

Cette requête garantit qu'une image est renvoyée pour chaque pays, fournissant ainsi un ensemble de résultats plus cohérent et fiable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal