如何使用 SQL 查询从另一个表中更新作为下拉列表的字段

Posted

技术标签:

【中文标题】如何使用 SQL 查询从另一个表中更新作为下拉列表的字段【英文标题】:How to update a field that is a drop down list from another table using a SQL query 【发布时间】:2017-10-16 21:59:26 【问题描述】:

大家好,我的 access 数据库中有两个表,分别标有 'Contacts''StatusList'StatusList由一列四行标记:

状态描述嫌疑人潜在客户查询申请人

联系人包括以下内容:

第一个最后一个电子邮件状态电话

Contacts 中的 Status 字段是一个下拉框,它来自 StatusList 表。 Contacts 表中的每一行最初都设置为 Suspect。

联系人中的电子邮件字段设置为只允许唯一的电子邮件。

我有一个标有 ExcelImport 的表,它与联系人表具有相同的字段。

最后,我想将 ExcelImport 表中的数据插入到联系人中。如果 ExcelImport 和联系人之间存在电子邮件匹配,我希望联系人中状态字段的行从可疑更新为潜在客户。

到目前为止,我有这个:

SELECT Contacts.contactEmail
FROM Contacts
Inner Join ExcelImport on Contacts.contactEmail = ExcelImport.contactEmail;

我知道这只会显示匹配的电子邮件。是否有任何方法可以更新与 Prospect 匹配的特定行的状态列表?

【问题讨论】:

您需要使用更新“查询”,而不是选择查询。此外,StatusList 表用于填充下拉列表这一事实似乎无关紧要,因为实际问题是关于使用匹配的电子邮件字段从另一个表更新一个表。 【参考方案1】:

如前所述,只需使用UPDATE 操作查询更改值,下拉菜单就会相应更改。如果我理解您的话,下拉列表只是您可能在表格设计中设置的一个查找组合框。它只是帮助控制输入的值。 UPDATE 查询将随着表值的更改而更改该下拉列表:

UPDATE Contacts INNER JOIN ExcelImport 
    ON Contacts.contactEmail = ExcelImport.contactEmail
SET Contacts.[Status] = 'Prospect';

此外,您提到 我想将 ExcelImport 表中的数据插入到联系人中,您可以通过运行 @ 来保持 电子邮件 字段的唯一性987654324@ 附加查询中的子句。

INSERT INTO Contacts ([First], [Last], [Email]], [Status], [Phone])
SELECT e.[First], e.[Last], e.[Email]], e.[Status], e.[Phone]
FROM ExcelImport e
WHERE NOT EXISTS
    (SELECT 1 FROM Contacts c WHERE c.[Email] = e.[Email])

因此,运行两个操作查询以导入唯一的电子邮件,对于重复的电子邮件,更新状态

【讨论】:

以上是关于如何使用 SQL 查询从另一个表中更新作为下拉列表的字段的主要内容,如果未能解决你的问题,请参考以下文章

pb中 如何把两个表中的内容导出到一个电子表格 如何把一个字段作为下拉列表框的item

sql [sql]如何从另一个表中的相应数据更新一个表中的数据

sql 更新让值等于从另一个查询出来的值

多个 <select> 下拉列表作为 sql 参数 | PHP

如何在 SQL 中使用 contains 从另一个表中搜索关键字

使用 MSSQL 中的 DYNAMIC SQL 从另一个表更新一个表中的值