Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168

    [MySQL] eliminazione righe

    Ciao ragazzi, ho una situazione del genere:

    ATTR1 ATTR2 ATTR3
    1 A M
    1 B N
    1 C O
    1 D P
    1 E Q
    2 F R
    2 G S
    2 H T
    2 I U
    2 L V

    Voglio realizzare una query che mi cancelli le ultime 2 righe di ogni attributo 1 presente nella tabella. Quindi, in questo caso, vorrei come risultato:

    ATTR1 ATTR2 ATTR3
    1 A M
    1 B N
    1 C O
    2 F R
    2 G S
    2 H T

    Aiutatemi, please!

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ultime due in base a quale criterio? C'è una chiave primaria?
    Nel caso un gruppo abbia 1/2 record si cancellano?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    Si, ho aggiunto il campo ID e quindi ho introdotto una chiave primaria.
    Ogni gruppo ha lo stesso numero di records, che è sicuramente maggiore di 2 quindi non si dovrebbe verificare il caso che hai detto.
    Il mio obiettivo iniziale è quello di ottenere due tabelle: una costituita dai primi 3 records di ogni gruppo e l'altra costituita dagli ultimi due records di ogni gruppo. Quindi ho pensato di fare una copia della mia tabella originaria e cancellare prima le ultime due righe e poi ripetere la stessa operazione sulle prime 3.
    Non so se c'è un modo più veloce, ma io ho pensato così!

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    106
    Ci vorebbe un criterio in base al quale cancellare le ultime 2 righe tipo un id sequenziale in cui cancelli quella con id più alto

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Prova così e vedi se i record che ottieni sono quelli desiderati.

    codice:
    select * from tabella as t1
    where (select count(*) from tabella as t2
           where t1.attr1 = t2.attr1 and t2.id > t1.id) <2

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    ho questo errore:

    [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from tabella as t1
    where (select count(*)
    from tabella as t2
    where t1.attr1' at line 1

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Versione di mysql?
    Magari posta anche il dump della struttura della tabella.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    La versione è MySQL Server 5.1

    CREATE TABLE `nome_db`.`tabella` (
    `id` int(10) unsigned NOT NULL DEFAULT '0',
    `attr1` varchar(10) NOT NULL,
    `attr2` varchar(30) DEFAULT NULL,
    `attr3` varchar(2) DEFAULT NULL,
    `attr4` int(2) DEFAULT NULL,
    `attr5` time DEFAULT NULL,
    `attr6` varchar(100) DEFAULT NULL,
    UNIQUE KEY `attr1` (`attr1`,`attr2`,`attr3`,`attr4`,`attr5`,`attr6`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da lilux
    Si, ho aggiunto il campo ID e quindi ho introdotto una chiave primaria.
    Hai aggiunto un campo id in un modo che non serve assolutamente a nulla assegnandogli di default valore 0.

    codice:
    create table `tabella` (
    `id` int(10) unsigned not null auto_increment,
    `attr1` varchar(10) not null,
    `attr2` varchar(30) default null,
    `attr3` varchar(2) default null,
    `attr4` int(2) default null,
    `attr5` time default null,
    `attr6` varchar(100) default null,
    unique key `attr1` (`attr1`,`attr2`,`attr3`,`attr4`,`attr5`,`attr6`),
    primary key(id)
    ) engine=innodb default charset=latin1;

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    Hai ragione..errore di distrazione!
    Funziona benissimo! Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.