MogMedlem sedan nov. 2003255 inlägg
Jag har en tabell med 8 kolumner där k1 har unika värden.
Jag vill plocka ut alla värden där värdet i k2 bara får förekomma en gång.
Detta funkar förutom att jag inte kommer åt värdena i alla kolumner:
SELECT DISTINCT k2 FROM TABELL
Detta tar med dubletter från k2:
SELECT DISTINCT * FROM TABELL
WHERE och ORDER BY ska läggas till fast jag tyckte det var irrellevant i sammanhanget.
Någon som kan och vill hjälpa ?
PeeerMedlem sedan mars 20025 362 inlägg
select * from tabell group by k2
?
LarsGMedlem sedan dec. 200012 465 inlägg
Om din data ser ut så här
K2 K3
-------
1 2
1 3
Vilket värde vill du ha från K3, K4 etc?
Flyttas från Mysql.
MogMedlem sedan nov. 2003255 inlägg
Peeer skrev:
select * from tabell group by k2
?
Funkar inte, får ändå ut dubletter från k2.
RED / Var lite snabb där, det funkar fast jag får inte ut det senaste, order by funkar inte alltså.
LarsG skrev:
Om din data ser ut så här
K2 K3
-------
1 2
1 3
Vilket värde vill du ha från K3, K4 etc?
Det senaste, en av kolumnerna är datum/tid.
LarsGMedlem sedan dec. 200012 465 inlägg
select k2,max(k3)
from t
group by k2
Det fungerar men om du däremot vill ha ut de andra kolumnerna som finns där k3 har max-värde så går det inte med en fråga i Mysql
http://www.mysql.com/doc/en/example-Maximum-column-group-row.html
Även om det som Peeer skrev är tillåtet i Mysql (vilket det absolut inte borde vara) så är det inget man skall anväda då det ger oförutsägbara resultat.
MogMedlem sedan nov. 2003255 inlägg
Jo det funkar, nästan, groda av mig, det var inte datatypen datum/tid på kolumnen utan varchar som innehåller en datumsträng som ser ut så här: 2004-01-19 02:07.
Går det att fixa till det med SQL eller måste jag byta datatypen ?
LarsGMedlem sedan dec. 200012 465 inlägg
Att du har varchar istället för datum borde inte ha någon betydelse i just detta fall om du är konsekvent med avseende på formatet. Jag tycker ändå att du skulle byta datatyp.
MogMedlem sedan nov. 2003255 inlägg
MogMedlem sedan nov. 2003255 inlägg
Öppnar denna tråden igen för jag får inte ihop det :(
Tar det från början och mer specifikt.
Det är en sökfunktion jag håller på med.
Tabellen ser ut så här:
answer_id thread_id postdate(varchar) x y z
1 1 2004-01-18 21:39
2 2 2004-01-18 22:04
3 3 2004-01-18 23:40
4 1 2004-01-19 02:07
5 2 2004-01-19 06:28
Där x y z representerar rubrik, författare osv med värden jag vill kunna skriva ut.
Kör jag denna frågan:
SELECT answer_id,thread_id,postdate,x,y,z,MAX(postdate)
FROM answers
WHERE headline LIKE '%".$_POST['stext']."%' OR content LIKE '%".$_POST['stext']."%'
GROUP BY thread_id
Söktexten hittas i answer_id 1 och 4 fast det är 1 som returneras när det är 4 jag vill ha.
Har testat med datetime som datatyp för postdate och det blev ingen skillnad.
Vad är det för fel?
LarsGMedlem sedan dec. 200012 465 inlägg
Det är just det problemet som jag avsåg med ofrutsägbara resultat.
Läs artikeln som jag länkade till.
MogMedlem sedan nov. 2003255 inlägg
Jag blir tyvärr inte mycket klokare av det.
Har testat ett par avsnitt av deras exempel och nej......