mysql - 像1,2这样一排的通讯分类 - Mysql简单数据库设计

标签 mysql

我正在使用一个简单的时事通讯脚本,其中可以为一个用户设置不同的类别。但是我想把不同的类别排成一行,比如 1,2,3

表格:

时事通讯_电子邮件

id  email          category
1   test@test.com    1
2   test@test.com    2

时事通讯类别

id  name
1   firstcategory
2   secondcategory

但是我要找的是这样的:

时事通讯_电子邮件

user_id  email                category
1        test@test.com        1,2
2        person@person.com    1

最好的解决方案是什么?

PS:用户可以在个人资料页面选择自己的类别。 (也许有 Mysql 更新?)

最佳答案

SQL 和关系数据模型并不是专门为这种事情而设计的。您可以执行以下任一操作:

  • 在第一个表上使用简单的 SELECT 查询,然后在您的使用代码中迭代结果,从第二个表中获取相应的行并将它们组合成一个字符串(如何你会这样做完全取决于你使用的语言)

  • 对两个表使用JOIN,遍历结果集并累积表 2 的值,只要表 1 的 ID 保持不变即可。这比第一个解决方案更难编码,而且您从数据库中提取的结果集更大,但您只需一个查询就可以逃脱。

  • 使用特定于 DBMS 的 SQL 标准扩展(例如 GROUP_CONCAT)来实现这一点。您将得到您所要求的,但您的 SQL 查询将无法移植。

关于mysql - 像1,2这样一排的通讯分类 - Mysql简单数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3851051/

相关文章:

PHP/MySQL - 选择字段唯一的所有行

php - 主键 - 随机字节好或坏

mysql - 插入 IF 值 X 在另一个表中增加

php - Android 到 MySQL 土耳其语字符写入为 "?"

MySQL: INSERT INTO ... ON DUPLICATE KEY UPDATE 不触发 AFTER UPDATE 触发器

php - 如何将 MySQL 查询 MATCH/AGAINST 转换为 LIKE 以绕过停用词列表

mysql 查询以获取按日期、时间和名称排序的数据(但不想在每个日期下拆分通用名称)

mysql - 在 MySQL 中生成随机 BLOB

mysql - 提取从今天起 9 天后发生的数据(登录日期)

python - 在Python中为MySQL创建插入语句