Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168

    [Mysql] query per selezionare righe particolari

    Ciao ragazzi, data la seguente situazione:

    attr1 attr2
    111 a
    111 a
    111 a
    222 b
    222 b
    222 c
    222 c
    222 c
    333 d
    333 d
    333 e
    333 e
    333 e
    333 f
    333 f
    333 g
    333 h

    vorrei selezionare tutte le righe, per ogni attr1, che hanno due attr2 distinti e se sono presenti più di due attr2 distinti allora quelli in eccesso non devono essere considerati.
    Quindi, l'output in questo caso dovrebbe essere:

    attr1 attr2
    222 b
    222 b
    222 c
    222 c
    222 c
    333 d
    333 d
    333 e
    333 e
    333 e

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Un pò ostica ma sembra andare.

    codice:
    set @attr1 = 0,@num = 1;
    select t.* from tabella as t
    inner join (
    		select *,@num := if(@attr1 = attr1, @num + 1, 1) as riga,
    		@attr1 := attr1 as i from 
    		(
    			select l1.* from tabella as l1 
    			inner join (
    					select attr1
    					from tabella
    					group by attr1
    					having count(distinct(attr2)) > 1) as l2
    					on l1.attr1 = l2.attr1
    					group by l1.attr1,l1.attr2) as l
    					order by attr1 asc, attr2 asc
    				     ) as p
    on t.attr1 = p.attr1 and t.attr2 = p.attr2
    where riga < 3

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    Si, il risultato è giusto..peccato che mi appare nel seguente ordine:

    attr1 attr2
    333 e
    222 c
    222 c
    222 c
    333 e
    333 e
    333 d
    333 d
    222 b
    222 b

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    E allora ordina i record come ti pare

    order by attr1,attr2

    un minimo di spirito d'iniziativa.

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.