sql >> Databasteknik >  >> RDS >> Mysql

mySQL-kolumn för att hålla array

MySQL stöder inte lagring av arrayer. Du kan dock använda en andra tabell för att emulera en array genom att lagra relationen mellan användarna och objekten. Säg att du har tabellen users :

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

Och du har en tabell som definierar items :

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

Du kan relatera vilka objekt en användare har med hjälp av en tabell som liknar 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)
);

Sedan, för att avgöra vilka objekt användare 123 har förvärvat kan du använda JOIN liknar:

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. MySQL-fråga med räkning och grupp efter

  2. Mysql - Förhindrar dubbletter av kombinerade kolumner med Unique Index

  3. Hur lägger man till kommentarer till en tabell i Oracle SQL Developer?

  4. Användningsfall för MySQL `FORCE INDEX`?