将MySQL中的数据列与不同的值关联

将MySQL中的数据列与不同的值关联,mysql,Mysql,我认为这是一个简单的问题,但我不能完全理解答案。在一个数据库表中,我有一系列位置ID,它们与另一个表中的位置ID关联。我想在这些ID之间创建一个明确且不变的链接,但是ID本身有不同的值 我如何确保(例如)BA789或BA8001中的员工始终与位置代码CN345关联(他们是相同的物理位置) 谢谢,Tom,如果没有看到实际的表模式和示例数据,很难判断,但是如果您的表看起来像 CREATE TABLE locations ( location_id VARCHAR(6) PRIMARY KEY )

我认为这是一个简单的问题,但我不能完全理解答案。在一个数据库表中,我有一系列位置ID,它们与另一个表中的位置ID关联。我想在这些ID之间创建一个明确且不变的链接,但是ID本身有不同的值

我如何确保(例如)BA789或BA8001中的员工始终与位置代码CN345关联(他们是相同的物理位置)


谢谢,Tom,如果没有看到实际的表模式和示例数据,很难判断,但是如果您的表看起来像

CREATE TABLE locations
(
  location_id VARCHAR(6) PRIMARY KEY
);

CREATE TABLE employees
(
  employee_id INT PRIMARY KEY, 
  location_id VARCHAR(6),
  FOREIGN KEY (location_id) REFERENCES locations(location_id)
);
SELECT employee_id, location_id, 
       COALESCE(m.location_id2, location_id) mapped_location_id
  FROM employees e LEFT JOIN location_map m
    ON e.location_id = m.location_id1;
然后可以在位置代码(ID)之间引入多对多映射表

包括以下内容

| LOCATION_ID1 | LOCATION_ID2 | |--------------|--------------| | BA789 | CN345 | | BA8001 | CN345 | 样本输出:

| EMPLOYEE_ID | LOCATION_ID | MAPPED_LOCATION_ID | |-------------|-------------|--------------------| | 1 | BA789 | CN345 | | 2 | BA8001 | CN345 | | 3 | BA9999 | BA9999 | |员工|位置| ID |映射|位置| ID| |-------------|-------------|--------------------| |1 | BA789 | CN345| |2 | BA8001 | CN345| |3 | BA9999 | BA9999|
这些表之间有什么联系?请记住,SQL表本质上是无序的,因此表中没有自然排序。@tomish了解连接@Sam D联接不要求每个表中有一列具有相同的数据吗?我可以使CN345 ID(以及其他类似的ID)在两个表中都可用,因此我猜应该是SELECT table2.BAID,其中table1.CNID=table2.CNIDHi Tom,欢迎使用so。你应该就你的问题提供更多的信息。就像您的表结构和每个表的一些数据示例一样。然后你说你需要什么作为结果。当然,试着表现出一些努力。我们不是来为你做这件事的。试试看,如果不行,你就试试看,我们会帮你的。太棒了!非常感谢-今晚晚些时候我将尝试此实现!Tom@tomish太好了:)让我知道进展如何。 | EMPLOYEE_ID | LOCATION_ID | MAPPED_LOCATION_ID | |-------------|-------------|--------------------| | 1 | BA789 | CN345 | | 2 | BA8001 | CN345 | | 3 | BA9999 | BA9999 |