Accueil - MySQL

Tout afficher

Erreur : "this is incompatible with sql_mode=only_full_group_by"

MySQL Posté le 21 janvier 2018

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

MySQL Posté le 21 janvier 2018


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

MySQL Posté le 12 février 2017

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

Publicité

Suivez-nous

Aidez-nous !

Admin