sql >> Database teknologi >  >> RDS >> Mysql

mySQL kolonne til at holde array

MySQL understøtter ikke lagring af arrays. Du kan dog bruge en anden tabel til at efterligne en matrix ved at gemme relationen mellem brugerne og elementerne. Lad os sige, at du har tabellen users :

CREATE TABLE users (
    user_id SERIAL PRIMARY KEY,
    ...
);

Og du har en tabel, der definerer items :

CREATE TABLE items (
    item_id SERIAL PRIMARY KEY,
    ...
);

Du kan relatere hvilke elementer en bruger har ved at bruge en tabel, der ligner user_items :

CREATE TABLE user_items (
    id SERIAL PRIMARY KEY,
    user_id BIGINT UNSIGNED NOT NULL,
    item_id BIGINT UNSIGNED NOT NULL,
    ...,
    FOREIGN KEY (user_id)
        REFERENCES users (user_id),
    FOREIGN KEY (item_id)
        REFERENCES items (item_id)
);

Derefter, for at bestemme, hvilke elementer bruger 123 har erhvervet, kan du bruge JOIN ligner:

SELECT items.*
FROM users
INNER JOIN user_items
    ON user_items.user_id = users.user_id
INNER JOIN items
    ON items.item_id = user_items.item_id
WHERE users.user_id = 123; -- Or some other condition.


  1. laravel 5.6 masseindsættelse af json-data

  2. Mysql Sorter efter efternavn, når fulde navn for kolonne

  3. Hvordan får man en optælling, selvom der ikke er nogen resultater, der svarer til mysql?

  4. Hvorfor opretter du en visning i en database?