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

colonna MySQL per contenere l'array

MySQL non supporta la memorizzazione di array. Tuttavia, puoi utilizzare una seconda tabella per emulare un array memorizzando la relazione tra gli utenti e gli elementi. Supponi di avere la tabella users :

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

E hai una tabella che definisce items :

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

Puoi mettere in relazione quali elementi ha un utente usando una tabella simile a 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)
);

Quindi, per determinare quali elementi utilizza 123 ha acquisito, puoi usare JOIN è simile a:

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.