Journal du Net > Développeurs > Contributions > Soumettez votre meilleure astuce SQL

APPEL
A CONTRIBUTION

Vous êtes passé maître dans l'art du développement SQL. Ce langage de requêtage n'a plus de secret pour vous.

Participez

 Tips mysql   

Julien Guézennec , Paris

Quel est l’objectif de votre astuce ?

Quelques commandes très utiles et pas toujours évidentes...

Décrivez votre astuce en détails. N'hésitez-pas à inclure des portions de codes.

SELECT SUM(champ) FROM table WHERE...

INSERT INTO table (cle, blabla) VALUES (1337, 'truc') ON DUPLICATE KEY UPDATE blabla='truc' ;

REPLACE INTO user_pref (prf_idt, uid, prf_usr_val) VALUES ($prf_idt, $uid, $prf_usr_val)

Trouver les doublons...
SELECT ref FROM produits GROUP BY ref HAVING COUNT( ref ) > ; 1

La clause HAVING peut utiliser des fonctions d'agrégation, alors que la clause WHERE ne le peut pas :
SELECT user, MAX(salary) FROM users GROUP BY user HAVING MAX(salary)> ; 10 ;

SELECT a, COUNT(b) FROM test_table GROUP BY a DESC

UPDATE wp_posts SET post_content = REPLACE(post_content, "< ; tags> ; ", "[tags]") ;

UPDATE mod_blocs_vip SET quantite=(quantite+1) WHERE id='1' LIMIT 1

SELECT DISTINCT (cat_id), id, titre_$lg FROM mod_ec_idees WHERE valide=1 GROUP BY cat_id ORDER BY note DESC LIMIT 6

SELECT DISTINCT store_type FROM stores WHERE NOT EXISTS (SELECT * FROM cities_stores WHERE cities_stores. Store_type=stores. Store_type) ;

SELECT QUOTE("Don't") ; -> ; 'Don\'t ! '

ORDER BY id*0+RAND() DESC LIMIT 0, 1 // Cf. Plus bas...

SELECT 'a' REGEXP '^[a-z]' ;

WHERE ville_id IS NULL OR ville_id='3'

SELECT REPLACE('www. Mysql. Com', 'www. ', '') ;

SELECT ROUND(-1. 23) ;

ORDER BY rang*1 > ; > ; > ; > ; FORCE LE CHAMPS VARCHAR EN INT

SELECT LOWER('QUADRATIQUE'), UPPER(str)

SELECT CONCAT(last_name, ', ', first_name) AS full_name

SELECT t1. Name, t2. Salary FROM employee AS t1, info AS t2 WHERE t1. Name = t2. Name ;

SELECT * FROM mod_blocs_vip WHERE actif='1' AND datedeb< ; =NOW() AND datefin> ; =NOW() ORDER BY ordre DESC LIMIT 4
SELECT CURRENT_DATE() as date

La ligne contenant le maximum d'une certaine colonne
SELECT article, dealer, price FROM shop WHERE price=(SELECT MAX(price) FROM shop) ;

SELECT * FROM Livres WHERE Prix NOT IN (40, 50, 72) ;
SELECT * FROM Livres WHERE Prix BETWEEN 40 AND 50 ;

les enregistrements dans une table qui n'ont pas de correspondances dans une autre :
SELECT table1. * FROM table1 LEFT JOIN table2 ON table1. Id=table2. Id WHERE table2. Id IS NULL ;

AND (e. Ville_id=v. Id OR e. Ville_id IS NULL)

SELECT MIN(mee_dat) AS min, MAX(mee_dat) AS max FROM meeting

SELECT field1_index, field2_index FROM test_table WHERE field1_index = '1'
UNION
SELECT field1_index, field2_index FROM test_table WHERE field2_index = '1' ;

SELECT TRIM(' bar ') ; -> ; 'bar'
SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx') ; -> ; 'barxxx'
SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx') ; -> ; 'bar'
SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz') ; -> ; 'barx'

SELECT LEFT(RIGHT(mee_date, 4), 2) -> ; 04 (mee_date = 20070412)

Strange day...
SELECT article, SUBSTRING(MAX(CONCAT(LPAD(price, 6, '0'), dealer)), 7) AS dealer, 0. 00+LEFT(MAX( CONCAT(LPAD(price, 6, '0'), dealer)), 6) AS price FROM shop GROUP BY article ;

INSERT INTO new_table(date_field) SELECT DATEADD(s, timestamp_field, '19700101') FROM old_table

SELECT SUBSTRING(datedeb, 1, 4) as year.


Publié le 02 mars 2009

Herve
Intéressant: -)
Dommage que ce soit un peu brouillon sans séparation claire des tips et sans petit texte ou présentation du résultat
Aina Mirija
Spécifique à Mysql ou fonctionne pour SQL en général ?
Fab
Merci très sympa ce petit récap

Il y a aussi une fonction sympa coalesce( sum(a), 0)
=>évite de retourner un null quand certains champs ne sont pas renseignés
Souâd
Il manque les explications de toutes ces requêtes pour que ce soit plus clair
4 contributions : 1 2 3 4
 




 

RECHERCHE