28 de febrer de 2015

MySQL: Actualitzar una taula a partir d'una selecció sobre la mateixa taula

Treballant amb bases de dades tot sovint ens trobem que cal fer una actualització massiva de dades en una taula. Si la cosa és senzilla, es pot fer amb:
UPDATE LaMevaTaula
SET ElMeuCamp=NouValor
WHERE condició
Evidentment, podem modificar diversos camps, i la condició pot ser més o menys senzilla.

Però, de vegades, la condició pot ser realment complexe i difícil de formular si inclou la mateixa taula i relacions complexes amb d'altes taules. En aquest cas, convé separar la selecció de l'actualització. Això ho podem fer amb dues comandes MySQL, però serà més eficient si ho fem en una de sola:
UPDATE LaMevaTaula
SET ElMeuCamp=NouValor
WHERE id IN 
(
    SELECT T.id FROM (
 SELECT TS.id FROM LaMevaTaula AS TS 
        JOIN unió_complexe_amb_altres_taules
    ) AS T
)
Fixeu-vos com generem els identificadors a actualitzar amb la selecció complexe, i després s'utilitzen aquests per filtrar els registres en l'actualització en massa.

21 de febrer de 2015

Veure la versió d'Ubuntu des de la línia de comandes

Tot  sovint convé saber la versió d'Ubuntu en la que ens trobem, sobretot si treballem amb múltiples servidors al llarg del temps. Pot ser necessari per temes de compatibilitats, etc...

Si disposem d'entorn gràfic, n'hi ha prou d'anar a l'opció de "Quant aquest ordinador" dins del menú de sessions (la rodeta de dreta del tot de la barra d'eines):


Però en un servidor no disposem d'aquesta possibilitat. Per sort, tenim la comanda que en dirà la versió:
$ lsb_release -a
I també la que ens pot dir si estem treballant amb 32 o 64 bits:
$ getconf LONG_BIT
Senzill i molt útil !