如何将字符串映射到 MS Access 中的 table 列?

How to map a string to a table column in MS Access?

我需要一个 SQL 查询来将表 A 中列的字符串内容映射到表 B 中的一组列。它看起来像这样:

TableA
| ID | Status |
---------------
| 0  | "full" |
| 1  | "part" |
|    |        |

TableB
| ID | full | part |expire|
--------------------------
| 0  | true | false| false|
| 1  | false| true | false|
|    |      |      |      |

我正在使用 MS Access,目前我只有这些:

SELECT * FROM TableA INNER JOIN TableB ON TableA.ID = TableB.ID

根据ID正确匹配了两个表。但是,我不知道从这里去哪里。假设将以下内容添加到表 A:

{ID:2, Status:"Expire"}

我如何将它从 TableA 映射到 TableB?理想情况下,这将在 1 个查询中完成。

非常感谢! :)

对每一列使用 IIf() 函数。

SELECT ID,
    IIf([Status]='full', True, False) AS [full],
    IIf([Status]='part', True, False) AS [part],
    IIf([Status]='expire', True, False) AS [expire]
FROM Table1

你的问题不够明确。

如果要从 TableA 重新创建 TableB,请在查询中使用 IIf ( expr , truepart , falsepart ) 函数。 下面的示例(添加的状态字段 - 您可以将其排除):

Select ID,Status, IIf([Status]="full", true, false) as full, IIf([Status]="part", true, false) as part,IIf([Status]="expire", true, false) as expire from TableA

如果您打算连接两个表,请使用 LEFT OUTER 连接,这将包括 TableA 中的所有行。在这种情况下,第 3 行的布尔标志将为空值,因为没有匹配的行。

SELECT TableA.ID,Status,full,part,expire FROM TableA LEFT JOIN TableB ON TableA.ID = TableB.ID

此致, 比克斯