---
title: "IN fungerar inte riktigt"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/85716-in-fungerar-inte-riktigt"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Skarre"
published: "2003-09-10T16:59:43.000Z"
updated: "2003-09-11T16:15:32.000Z"
replies: 6
views: 206
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/85716-in-fungerar-inte-riktigt"
---

# IN fungerar inte riktigt

## #1 — Skarre, 2003-09-10T16:59Z

Jag använder ofta (med ASP/Access) frågor liknande den nedan för att exempelvis endast visa bildgallerier som innehåller bilder, men nu när jag för första gången testade detta i MySQL så vill det sig inte riktigt. Denna gång försöker jag visa endast de länkkategorier som innehåller länkar.

```
SELECT * FROM links_categories WHERE categoryid IN (SELECT DISTINCT categoryid FROM links_links)
```

> You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT DISTINCT links.categoryid FROM links_links)' at line 1

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

## #2 — aasah, 2003-09-10T17:15Z

MySQL klarar tydligen inte - utom senaste versionen (?) - delfrågor. Detta borde funka istället:

SELECT C.\* FROM links_categories C, links_links L 
WHERE C.categoryid = L.categoryid;

Då kräver du ju också att id:na ska stämma.

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

## #3 — Skarre, 2003-09-10T17:46Z

Jag prövar, men vill gärna veta hur det går till. Vad är betydelsen av "C." och "L."? Mina sökningar efter svaret går inte speciellt bra.

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

## #4 — LarsG, 2003-09-10T18:16Z

C och L är bara förkortingar för tabellnamn. Ett sådant kan anges efter tabellnamnet i from-listan

```
from links_categories C
```

Man kan inte generellt säga att en fråga som

```
where id in (subselect)
```

går att skriva om med en join. I många fall kan de ge samma resultat men det är inte givet.

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

## #5 — aasah, 2003-09-11T13:50Z

Angående C och L: LarsG har självklart rätt, men jag vill göra ett tillägg. Eftersom categoryid är ett kolumnnamn som finns i båda tabellerna så måste du ange vilken tabell du menar i frågan. Du skulle alltså kunna skriva links_categories.categoryid = links_links.categoryid . Men jag är lat och skriver inte gärna mer än jag behöver, plus att jag tycker att det blir mer lättläst med användande av alias, eftersom man då mycket snabbt ser vilken tabell man tar det ifrån. (Man slipper läsa hela namnet, lättare hålla koll på en bokstav.)  

> **LarsG skrev:**
>
> ... Man kan inte generellt säga att en fråga som
> 
>
>
> ```
> where id in (subselect)
> ```
>
> 
> 
> går att skriva om med en join. I många fall kan de ge samma resultat men det är inte givet.

Det var verkligen inte min avsikt heller!!! Men i detta fall borde det vara korrekt. Jag tyckte det var självklart att mitt svar rörde den specifika frågan i tråden... uppenbarligen borde jag varit tydligare.

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

## #6 — LarsG, 2003-09-11T14:42Z

Ett exempel där in och join ger olika resultat

```
SQL>create table a(c1 int);
SQL>create table b(c1 int);
SQL>insert into a values(1);
SQL>insert into b values(1);
SQL>insert into b values(1);
SQL>select * from a where c1 in (select c1 from b);
         C1
===========
          1

                  1 row found

SQL>select a.* from a , b where a.c1 = b.c1;
         C1
===========
          1
          1

                  2 rows found
```

```
select distinct a.* from a , b where a.c1 = b.c1;
```

ger samma resultat (i detta fall) som frågan med IN. I det generella fallet så går det inte att översätta en sub-select till en join (även om dokumenationen för Mysql påstår det.)

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

## #7 — Skarre, 2003-09-11T16:15Z

Tack för förklaringen av "genvägarna"! Väldigt smidigt! :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/85716-in-fungerar-inte-riktigt
