基于映射的mysql数据库连接
问题的抽象如下: 我有一个表有一列叫做“国家”。存储的值是国家名称,例如美国、英国 我有另一个表,其中有一列名为“country_code”。存储的值是国家的数字表示,例如12、17基于映射的mysql数据库连接,mysql,Mysql,问题的抽象如下: 我有一个表有一列叫做“国家”。存储的值是国家名称,例如美国、英国 我有另一个表,其中有一列名为“country_code”。存储的值是国家的数字表示,例如12、17 如何基于这两个表执行连接操作(例如内部连接)?困难在于country和country_代码具有一对一的映射,但并不直接相等。您可以创建一个包含country和country_代码的映射表 我假设您不能将包含country_代码的表更改为使用country的字符串表示形式,或者将int列添加到您的countries表
如何基于这两个表执行连接操作(例如内部连接)?困难在于country和country_代码具有一对一的映射,但并不直接相等。您可以创建一个包含country和country_代码的映射表 我假设您不能将包含country_代码的表更改为使用country的字符串表示形式,或者将int列添加到您的countries表中 差不多 国家/地区映射
- country varchar列
- 国家/地区代码int列
- 主要关键国家/地区,国家/地区地图
为什么需要映射?您可以将其作为表的属性放在表中。您需要手动将这两个表合并到一个表中。您没有足够的信息以编程方式连接它们。Alex是对的,这两个表应该是一个。这将是
国家/地区映射
和国家/地区
之间的一对一关系……这是正确的。如回答中所述,我不确定OP是否可以改变原来2个表的结构。如果是这样的话,这将使这更容易,并且不需要映射表。可以使用CASE语句将国家添加到现有表中如果您在查询中引用CASE语句,这可能是一个非常大的CASE语句。我认为,像这样的硬编码可能并不总是可行的方法。看一看,你可以把它放在一个视野里。坏数据模型意味着黑客:)
SELECT *
FROM countries c INNER JOIN
country_mappings cm ON c.country = cm.country inner join
your_other_table yot ON cm.country_code = yot.country_code