Accueil - MySQL
Tout afficherErreur : "this is incompatible with sql_mode=only_full_group_by"
Cette erreur apparaît depuis la version 5.7 de MySQL. Avant cette version, MySQL autorisait de ne pas avoir les mêmes colonnes présentes dans le SELECT et dans le GROUP BY. Maintenant, et pour se rapprocher des comportements des autres SGBDR, MySQL refuse ce comportement.
Pour pallier à ce problème, deux options s'offrent à nous : soit faire en sorte d'avoir les mêmes colonnes dans le SELECT et le GROUP BY, soit désactiver l'option "only_full_group_by" et ainsi retrouver le comportement d'avant.
Pour désactiver l'option, il suffit de lancer la requête SQL suivante :
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Lire ...
MySQL - Supprimer la totalité des tables d'une base de données sans erreur

Pour supprimer l'ensemble des tables d'une base de données sans qu'il y ait d'erreurs (notamment les erreurs provoquées par les contraintes de clés étrangères), il suffit simplement de lancer la requête suivante :
SET FOREIGN_KEY_CHECKS = 0;
SET GROUP_CONCAT_MAX_LEN=32768;
SET @tables = NULL;
SELECT GROUP_CONCAT('`', table_name, '`') INTO @tables
FROM information_schema.tables
WHERE table_schema = (SELECT DATABASE());
SELECT IFNULL(@tables,'dummy') INTO @tables;
SET @tables = CONCAT('DROP TABLE IF EXISTS ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET FOREIGN_KEY_CHECKS = 1;
Lire ...
MySQL faire la somme d'une somme
En MySQL, il existe une astuce pour faire la somme d'une somme très simplement ; il s'agit du modificateur "WITH ROLLUP".
Exemple :
Soit la table suivante que nous appellerons "test" :
+------+--------+
| year | price |
+------+--------+
| 2000 | 500 |
| 2000 | 9.5 |
| 2001 | 5.2 |
| 2000 | 47 |
| 2001 | 98 |
+------+--------+
Si nous souhaitons calculer la somme de la colonne "price" par années, on fait la requête suivante :
SELECT SUM(price)
FROM test
GROUP BY year
Résultat :
+------------+
| SUM(price) |
+------------+
| 556.5 |
| 103.2 |
+------------+
Maintenant, si nous souhaitons faire la somme total de l'ensemble des éléments de la colonne "price", on pourra utiliser la fonctionnalité "WITH ROLLUP" :
SELECT SUM(price)
FROM testprice
GROUP BY year
WITH ROLLUP
Résultat :
+------------+
| SUM(price) |
+------------+
| 556.5 |
| 103.2 |
| 659.7 |
+------------+
Lire ...
Rechercher
Tags
Articles récents
- "error:0308010C:digital envelope routines::unsupported"
- JS - Cacher tous les éléments d'une classe spécifique
- Démarrer et arrêter PostGreSQL en ligne de commande
- Docker - Supprimer les images inutilisées
- MySQL - Récupérer toutes les clés étrangères d'une colonne
- Supprimer un fichier d'un référentiel Git sans le supprimer du système de fichiers local
- Arnaque au chantage et site web prétendument piraté
- Ruby - Décoder une chaîne en base 64 et écrire le résultat dans un fichier
- Linux - Supprimer un dossier et tous ses fichiers
- LibreOffice - Supprimer toutes les images d'un document