sql >> Databasteknik >  >> RDS >> Mysql

Hur lagrar man arrayer i MySQL?

Det korrekta sättet att göra detta är att använda flera tabeller och JOIN dem i dina frågor.

Till exempel:

CREATE TABLE person (
`id` INT NOT NULL PRIMARY KEY,
`name` VARCHAR(50)
);

CREATE TABLE fruits (
`fruit_name` VARCHAR(20) NOT NULL PRIMARY KEY,
`color` VARCHAR(20),
`price` INT
);

CREATE TABLE person_fruit (
`person_id` INT NOT NULL,
`fruit_name` VARCHAR(20) NOT NULL,
PRIMARY KEY(`person_id`, `fruit_name`)
);

person_fruit Tabellen innehåller en rad för varje frukt en person är associerad med och länkar effektivt person och fruits tabeller tillsammans, I.E.

1 | "banana"
1 | "apple"
1 | "orange"
2 | "straberry"
2 | "banana"
2 | "apple"

När du vill hämta en person och all deras frukt kan du göra något så här:

SELECT p.*, f.*
FROM person p
INNER JOIN person_fruit pf
ON pf.person_id = p.id
INNER JOIN fruits f
ON f.fruit_name = pf.fruit_name


  1. Escapende kontrolltecken i Oracle XDB

  2. Oracle-fråga för att hämta kolumnnamn

  3. FrankenQueries:när SQL och NoSQL kolliderar

  4. Neo4j - Skapa ett index med Cypher