---
title: "Select ... where x in (array)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/158975-select-where-x-in-array"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "pettsson"
published: "2007-04-05T19:51:16.000Z"
updated: "2007-04-06T09:40:52.000Z"
replies: 3
views: 343
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/158975-select-where-x-in-array"
---

# Select ... where x in (array)

## #1 — pettsson, 2007-04-05T19:51Z

Efter sökning och läsning tror jag inte att detta går, men att skriva runt det blev så klumpigt att jag måste fråga...
Jag har en array groups i en tabell users, och vill plocka ut de grupper som har ett id i arrayen ur tabellen groups, dvs något åt det här hållet:

```
SELECT * FROM groups WHERE groupid IN (SELECT groups FROM users WHERE userid = <php>);
```

Här får jag ett fel ung. 'integer=integer\[\], finns ingen operator.'
Går detta att lösa utan att först hämta arrayen, strängmanipulera lite och sedan köra del två? Så gör jag nu, men det är rätt osnyggt och inte helt uppenbart vad som händer när man läser koden... (kommentera är fegt ;) )

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

## #2 — @nders, 2007-04-06T06:15Z

Hur menar du att du har en *array* i users-tabellen? Menar du att du har en kommaseparerad lista med flera värden i ett fält? I så fall; gör om - gör rätt. Bryt ut dessa värden till en egen tabell, usergroups, där du lagrar användarid och gruppid. Sedan är det bara att joina för fulla muggar.

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

## #3 — pettsson, 2007-04-06T09:08Z

Kanske skulle skrivit det ja... Jag använder PostgreSQL, och där finns det arrays. Resultatet av t.ex. "SELECT groups FROM users WHERE userid='pettsson'" blir "{0,1,4}" om användaren pettsson är i grupperna med id 0, 1 och 4. Så i slutändan blir det ju en kommasepararerad lista iofs...
Du menar att jag har en tabell med en rad för varje grupp man är medlem i? Dvs "SELECT groupid FROM usergroups WHERE username='pettsson'"-\> tre rader; 0, 1 och 4?

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

## #4 — Peter S, 2007-04-06T09:40Z

Det är det korrekta sättet att lagra information i en databas.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/158975-select-where-x-in-array
