2009-09-11 9 views
0

Actuellement j'ai cette requête:PHP MYSQL multiples ou uniques DISTINCT/UniqueValues ​​

SELECT column1,column2 FROM table 

colonne1 doit être distincte, colonne2 ne fonctionne pas. Maintenant, je sais que cela n'a pas de sens mais j'ai besoin que column1 soit distinct et que column2 soit quoi que ce soit. Comment ferais-je cela?

+1

Voulez-vous un seul bla1 au hasard chaque fois que vous avez deux ou plusieurs PID? –

+0

bien je ne veux pas faire "select * from table" parce que je veux seulement revenir "pid" et "bla1" - où 'pid' est distinct et 'bla1' ne l'est pas. le résultat étant rangées 1-3 – Mickey

Répondre

1

Essayez ceci (le plus rapide):

SELECT * 
FROM `table` 
GROUP BY pid 
HAVING min(id) 

seconde (plus lent) Option:

select * 
from `table` t1 
where 
    t1.id = (select min(id) from `table` t2 where t1.pid = t2.pid) 
+0

:(n'est pas là un moyen de le faire sans le "groupe/min"? – Mickey

+0

Pourquoi ne voulez-vous pas le regroupement? SELECT DISTINCT est pour obtenir des valeurs uniques seulement, d'autres valeurs que vous essayez et select sera ambigu .. Devrait-il choisir 2 ou 7 comme le bla1? – DisgruntledGoat

+0

Il n'y a aucun moyen de le faire sans groupe, ou il y a - subselect, mais ce sera lent ou vous pouvez supprimer ces enregistrements si vous n '' Pourquoi vous ne voulez pas utiliser le groupe par? –

2
select pid, group_concat(distinct bla1) as bla1s 
from table 
group by pid; 

Le ci-dessus vous obtenez 1 ligne pour chaque pid et vous serez en mesure de voir s'il y a des erreurs supplémentaires sans introduire une nouvelle colonne ou avoir à se contenter d'un choix aléatoire de multiples bla1s.