mysql - 查询具有多个可能匹配值的字段的最快方法

标签 mysql

我有 2 个表。

第一个表称为 professions,它们按 ID 索引。所以每个职业现在都有一个与之关联的唯一 ID。

我的第二个表叫做 contacts,其中有一个 profession 字段,现在只包含与某个职业相关联的 ID。

我的问题是,如果我有一个联系人关联了多个职业怎么办。

查询表的最佳方式和存储联系人职业的方式是什么。我不想做的是创建一个字段来为我拥有的每个职业存储一个 0 或 1 int。原因是因为我想动态地增加专业表,并让数字反射(reflect)我查询时网站上的任何动态变化。

最佳答案

你有一个多对多的关系。要在 MySQL 中实现它,您应该使用链接表。所以 professionscontacts 应该在每个表中有一个 id,但没有外键,你创建一个名为 profession_contact_links 或其他东西的新表,包含它自己的 id,以及 profession_idcontact_id,它们都是各自表的外键。然后你可以有许多联系人与每个职业相关联,并且许多职业与每个联系人相关联。要在一个选择中将两个主表连接在一起,您需要两个连接,它们是什么取决于您要选择的内容。

关于mysql - 查询具有多个可能匹配值的字段的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12432672/

相关文章:

mysql - 如何制作一个 SQL 来创建一个报告,该报告选择所有带有 certian 行项目的报价,并包括另一个项目(如果它在该报价上)?

mysql - 在 SQL 中查询来自前 3 个城市的前 3 个用户

javascript - 如何使用 Sequelize 按最后一条消息日期订购联系人?

mysql - 在插入期间从其他表中选择数据?

mysql - 重复错误

mysql - 如何使用信息模式获取不允许 select * 的表结果

python - 一个模型如何可以有多个键,并以相同类型的模型作为值?

php - 在实时 ajax 搜索中搜索时出现 fatal error

带有 Sum 和其他列的 PHP PDO 语句失败

php - MySQL 查询选择除最新日期时间以外的所有日期时间