---
title: "Fråga angående INSERT"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/145232-fråga-angående-insert"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "learn"
published: "2006-04-08T13:03:46.000Z"
updated: "2006-04-11T16:18:50.000Z"
replies: 13
views: 671
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/145232-fråga-angående-insert"
---

# Fråga angående INSERT

## #1 — learn, 2006-04-08T13:03Z

Kan man göra ngt liknande detta...

```php
INSERT INTO tbl (ID, text)
VALUES (SELECT MAX(ID) FROM tbl2, 'testar')
```

...eller måste jag ha två separata querys? Jag vill alltså lägga in det högsta id-numret från en annan tabell.

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

## #2 — LarsG, 2006-04-08T13:41Z

```
 INSERT INTO tbl (ID, text)
VALUES ((SELECT MAX(ID) FROM tbl2), 'testar')
```

är giltig SQL men dock ej stött i de flesta DBMS.

```
 INSERT INTO tbl (ID, text)
SELECT MAX(ID),'testar' FROM tbl2
```

skall fungera dock.

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

## #3 — learn, 2006-04-08T13:53Z

> **LarsG skrev:**
>
> ```
>  INSERT INTO tbl (ID, text)
> VALUES ((SELECT MAX(ID) FROM tbl2), 'testar')
> ```

 Fungerade bra. Jag kör MySQL.

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

## #4 — LarsG, 2006-04-08T15:40Z

Är det här ett försök att få targ på värdet för en kolumn som är definierad som auto_increment?

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

## #5 — learn, 2006-04-09T11:03Z

> **LarsG skrev:**
>
> Är det här ett försök att få targ på värdet för en kolumn som är definierad som auto_increment?

Där slog du huvudet på spiken. :)

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

## #6 — LarsG, 2006-04-09T11:13Z

Då skall du inte använda max utan funktionen last_insert_id istället för en select.

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

## #7 — learn, 2006-04-09T11:15Z

> **LarsG skrev:**
>
> Då skall du inte använda max utan funktionen last_insert_id istället för en select.

OK, hur använder jag den? Jag vet, jag kan ju kika i manualen... men du får gärna statuera ett exempel. :)

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

## #8 — LarsG, 2006-04-09T12:58Z

Ok, jag statuerar ett exempel. Kika i manualen.

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

## #9 — learn, 2006-04-11T13:29Z

LAST_INSERT_ID() verkar vara det jag söker. Men hur vet queryn vilken tabell man menar. Det är ju teoretiskt möjligt att en annan användare lägger in en post i en annan tabell nästan precis samtidigt. Då kanske den andra användarens skapade ID hämtas istället för det rätta...

```php
INSERT INTO foo (auto,text)
    VALUES(NULL,'text');              # generate ID by inserting NULL
INSERT INTO foo2 (id,text)
    VALUES(LAST_INSERT_ID(),'text');  # use ID in second table
```

**R:** Vad är egentligen skillnaden: (SELECT MAX(ID) FROM tbl2)?

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

## #10 — LarsG, 2006-04-11T13:56Z

Om du använder max kan du råka ut för det beskrev, att du får fel värde. last_insert_id returnerar det senaste skapade auto_increment-värdet på någon tabell i din anslutning. Det påverkas inte av vad andra användare tar sig för.

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

## #11 — learn, 2006-04-11T14:29Z

Aha, ja fattar!

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

## #12 — learn, 2006-04-11T15:47Z

Kom på en sak.

Om jag nu har 3 INSERT-querys, där jag i den andra och tredje vill lägga in det ID som skapades (auto_increment) i den första så blir det ju fel med last_insert_id... Varför? Jo, därför att i den andra queryn skapas också ett ID m.h.a. auto_increment, och det är ju inte detta som skall stoppas in i den tredje... Jag vill ha det sista ID som skapats i tabell 1 i den första INSERT-queryn.

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

## #13 — LarsG, 2006-04-11T15:56Z

Hämta värdet och lagra det i en variabel i ditt skript.

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

## #14 — learn, 2006-04-11T16:18Z

Mm ok.

Finns det ngt bättre, mindre omständigt sätt att göra det på i PHP än följande:

```php
$sql_query = mysql_query("SELECT LAST_INSERT_ID() AS id");

$result = mysql_fetch_assoc($sql_query);

$last_insert_ID = $result['id'];
```

Ingen som har en bättre lösning?

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/145232-fråga-angående-insert
