mySQL:当值x = ' '然后值y = 6时插入选择

标签 mysql sql if-statement case-when

INSERT INTO Agent (agentID, agentName, locationID) 
SELECT DISTINCT pantodata.agentID, pantodata.agentName FROM pantodata
CASE
WHEN pantodata.AgentTown = 'Stirling' THEN locationID = 6 
WHEN pantodata.AgentTown = 'Dunblane' THEN locationID = 3
END
FROM pantodata

Pantodata table:
agentID  AgentName  AgentTown
100      John        Stirling
101      Jack        Dunblane

Location table:
locationID  City
1           Bannockburn
2           Dollar 
3           Dunblane
4           Falkirk
5           Menstrie
6           Stirling

Agent table:
agentID     agentName    locationID

我正在尝试将 pantodata 中的 agentID 和 pantodata 中的 agentName 插入到代理表中。然后,我尝试检查所述代理所在的城镇(来自 pantodata 表),然后将 locationID(在代理表内)分配给某个数字,具体取决于他们来自 pantodata 表中指定的城镇。

最佳答案

查询中存在一些语法错误。尝试下面的更正版本。

INSERT INTO Agent (agentID, agentName, locationID) 
SELECT DISTINCT pantodata.agentID, pantodata.agentName,
CASE
WHEN pantodata.AgentTown = 'Stirling' THEN 6 
WHEN pantodata.AgentTown = 'Dunblane' THEN 3
END
FROM pantodata

使用位置表。这假设位置表中的 locationidcity 之间存在一对一关系。

INSERT INTO Agent (agentID, agentName, locationID) 
SELECT p.agentID, p.agentName, l.locationid
FROM pantodata p
JOIN Location l on p.AgentTown = l.city

关于mySQL:当值x = ' '然后值y = 6时插入选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33784286/

相关文章:

PHP 帐户注册确认电子邮件代码未确认

java - 为什么最后的 else 语句没有在这里打印/执行?

php - 从 PHP 登录页面选择要登录的数据库

php - 选择 .. where ... 或从 2 个表中选择

php - 当我有 2 个同名列时,如何识别 mysql 中的列

c# - 需要获取当前网络服务器名称

C++:添加逻辑上正确的 if 语句会使我的程序崩溃

mysql - Fabric-ca-server连接到azure mysql : this authentication plugin is not supported

sql - 按选择第一次出现的字段分组我怎样才能得到最后一个?

mysql - 如何使 COUNT 不计算(fieldname) NULL 值?