gpt4 book ai didi

用于保存数组的 mySQL 列

转载 作者:行者123 更新时间:2023-11-29 02:58:55 25 4
gpt4 key购买 nike

我是编码方面的初学者,尤其是 SQL 和 PHP。我处理应用程序。 120 个用户。用户可以获取应用程序。 300 种不同的收藏品。当用户获取特定项目时,我希望将该特定项目的 ID 号存储在获取它的用户的行中,以便有一些关于用户已经拥有的项目的信息(并避免重复项目在他的属性(property))。有没有好的方法来存储这些信息?甚至可以将列类型设置为数组并将其存储在那里吗?

请注意:我并不懒惰,我一直在四处挖掘并寻找答案 2 小时。我找不到解决办法。我知道一个人应该只将一条信息插入一个单元格的规则。

最佳答案

MySQL 不支持存储数组。但是,您可以使用第二个表通过存储用户和项目之间的关系来模拟数组。假设您有表 users:

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

并且您有一个定义项目的表:

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

您可以使用类似于 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)
);

然后,要确定用户 123 获得了哪些元素,您可以使用类似于以下的JOIN:

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.

关于用于保存数组的 mySQL 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26872445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com