---
title: "Sortera så att det värde som finns flest gånger kommer först?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/83074-sortera-så-att-det-värde-som-finns-flest-gånger-kommer-först"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "nkrantz"
published: "2003-07-30T14:17:50.000Z"
updated: "2003-07-30T14:58:18.000Z"
replies: 6
views: 235
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/83074-sortera-så-att-det-värde-som-finns-flest-gånger-kommer-först"
---

# Sortera så att det värde som finns flest gånger kommer först?

## #1 — nkrantz, 2003-07-30T14:17Z

Som min rubrik lyder vill jag alltså göra. Säg att jag i en sökning får följande resultat:

id \| yrke_id
4 \| 5
4 \| 6
4 \| 7
4 \| 5
6 \| 8
1 \| 2
1 \| 9
4 \| 10

Då vill jag att den skall dels GROUP BY per id men också så att den sorterar så att ordningen blir 4 - 1 - 6

Någon som vet hur man gör?

/ Nippe

Permalänk: https://www.webforum.nu/p/83074

## #2 — LarsG, 2003-07-30T14:22Z

```
select id
 from t
 group by id
 order by count(*) desc
```

Permalänk: https://www.webforum.nu/p/1123760

## #3 — nkrantz, 2003-07-30T14:24Z

Det är ju strålande!

Tack så mycket!

/ Nippe

Permalänk: https://www.webforum.nu/p/1123763

## #4 — nkrantz, 2003-07-30T14:32Z

Hm.. ville visst inte funkar

```
SELECT 
					m.member_id,
					m.name
				FROM 
					tbl_member AS m,
					tbl_presentation AS p,
					tbl_freetext AS f
				WHERE 
						(p.presentation LIKE "%erfarenhet%"
					AND 
						p.member_id = m.member_id)
					OR
						(f.freetext LIKE "%erfarenhet%"
					AND 
						f.member_id = m.member_id)
				GROUP BY 
					(m.member_id)
				ORDER BY 
					count(m.member_id) DESC
```

 Felmeddelande: MySQL said: Invalid use of group function

Permalänk: https://www.webforum.nu/p/1123766

## #5 — nkrantz, 2003-07-30T14:45Z

Funkade att köra så här istället, det borde bli samma resultat:

```
SELECT 
					m.member_id,
					m.name,
					count(*) AS orderval
				FROM 
					tbl_member AS m,
					tbl_presentation AS p,
					tbl_freetext AS f
				WHERE 
						(p.presentation LIKE "%erfarenhet%"
					AND 
						p.member_id = m.member_id)
					OR
						(f.freetext LIKE "%erfarenhet%"
					AND 
						f.member_id = m.member_id)
				GROUP BY 
					m.member_id
				ORDER BY orderval DESC
```

// Nippe

Permalänk: https://www.webforum.nu/p/1123775

## #6 — LarsG, 2003-07-30T14:55Z

Om du vill ha de medlemmar som antingen har med erfarent i presentation eller freetext 

```
SELECT 	m.member_id,
	m.name
FROM tbl_member AS m left join
	tbl_presentation 
on 	(p.presentation LIKE '%erfarenhet%'
AND 	p.member_id = m.member_id)
left join tbl_freetext AS f
ON	(f.freetext LIKE '%erfarenhet%'
AND	f.member_id = m.member_id)
```

Den fråga (utan group by) du skrev skulle nog returnera lite för mycket poster pga ditt or-villkor.

Om det bara finns högst en post per användare i presentation och freetext så blir count alltid 1 så jag förstår inte vad du vill sortera på egentligen.

Permalänk: https://www.webforum.nu/p/1123780

## #7 — nkrantz, 2003-07-30T14:58Z

:) Jag förstår att du inte förstår ;) Jag förklarade aldrig ;) Det är så att varje member_id kan vara kopplad till X antal presentationsfält och i dessa presentationsfält kan det sökta ordet finnas Y gånger.

Vad jag alltså vill göra är att den medlemmen som har flest förekomster av det sökta ordet hamnar högst upp i listan.

Men du har rätt, min fråga returnerade ett antal poster för mycket, ska testa din fråga!

Tackar igen! :)

// Nippe

Permalänk: https://www.webforum.nu/p/1123783

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/83074-sortera-så-att-det-värde-som-finns-flest-gånger-kommer-först
