---
title: "Unik fält"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/157043-unik-fält"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Sabotnick"
published: "2007-02-10T19:56:38.000Z"
updated: "2007-02-12T13:03:33.000Z"
replies: 6
views: 309
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/157043-unik-fält"
---

# Unik fält

## #1 — Sabotnick, 2007-02-10T19:56Z

Detta är kanske en mycket dum fråga men jag kommer inte på hur jag ska göra.

Jag ska hämta ut saker från två tabeller, ordningen ska vara senaste datum först. Problemet finns i att jag vill ha unikt värde på en av fälten.

Exempel hur jag får nu

```
ID  ID2 DATUM  övrigt
14  1   070210 ------
15  1   070209 ------
17  2   070209 ------
```

Men vill ha

```
ID  ID2 DATUM  övrigt
14  1   070210 ------
17  2   070209 ------
19  3   070209 ------
```

```
SELECT
	tbl1.ID, tbl1.Datum, tbl1.övrigt
	tbl2.ID2, tbl2.övrigt
FROM tbl1
	RIGHT JOIN tbl2 ON tbl2.j_ID = tbl1.j_ID
ORDER BY tbl1.Datum DESC
LIMIT 0, 3
```

Jag vill att ID2-värden som jag får ut ska vara unika. Hjälp mig att lösa problemet.

Tack på förhand!

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

## #2 — Dies_Irae, 2007-02-10T20:12Z

group by tb2.ID2  innan order by kanske gör susen

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

## #3 — Sabotnick, 2007-02-10T20:27Z

Problemet uppstår med datumordningen... Jag får ut gamla rader och inte de senaste. Det är helt skum ordning när jag lägger till GROUP BY tb2.ID2.

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

## #4 — Peter S, 2007-02-11T13:56Z

Nu nämner du ej vilken version av DBMS som används, men testa:

```
SELECT
	tbl1.ID, tbl1.Datum, tbl1.övrigt
	tbl2.ID2, tbl2.övrigt
FROM tbl1
	RIGHT JOIN tbl2 t2 ON tbl2.j_ID = tbl1.j_ID
GROUP BY
	tbl1.ID, tbl1.Datum, tbl1.övrigt
	tbl2.ID2, tbl2.övrigt
HAVING
	tbl1.Datum
	= ( SELECT max(ti1.datum)
	      FROM tbl1 ti1
	    RIGHT
              JOIN tbl2 ti2
                ON ti2.j_ID = ti1.j_ID
             WHERE ti2.ID2 = t2.ID2 )
ORDER BY tbl1.Datum DESC
LIMIT 0, 3
```

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

## #5 — Sabotnick, 2007-02-11T14:17Z

Jag provade frågan men inreselect ser inte ut att fungera i MySQL 3.23.46 som webbhotellet kör med.

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

## #6 — emission, 2007-02-11T20:29Z

Oj! Det var en gammal MySQL! Det är helt riktigt att det inte fungerar i en så gammal version.

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

## #7 — LarsG, 2007-02-12T13:03Z

Med subselect

```
select <kolumnerAvIntresse>
   from t1 q
  where dateColumn in
  (select max(dateColumn)
      from t1
    where t1.id = q.id)
```

utan subselect

```
select q.<kolumnerAvIntresse>
   from t1 q join t1 on q.id = t1.id
 group by q.<kolumnerAvIntresse>
  having q.dateColumn = max(t1.dateColumn))
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/157043-unik-fält
