我正在尝试使用mysql从另一个表填充一个表。第一个表是用户,第二个表是技术人员。
用户包含:userID,surname,firstname,loginid,password,accesslevel。
技术人员包含:techID,tech_surname,tech_firstname,tech_loginid,tech_password,tech_accesslevel。
当我添加用户时,如果accesslevel = tech且users.loginid不等于technicians.tech_loginid,我希望技术人员表填充。
我尝试了几件事,结果就是没有添加记录,或者每次都添加了accesslevel = tech的用户中的所有记录,这给了我几个重复的记录。
我试过了:
INSERT INTO technicians (techID, tech_surname, tech_firstname, tech_loginid, tech_passwrd, tech_accesslevel)
SELECT firstname, surname, loginid, accesslevel, passwrd, tech_loginid
FROM users, technicians
WHERE accesslevel='tech' AND 'loginid!=tech_loginid'
它不起作用,如果我从WHERE子句中删除AND语句,每次添加accesslevel = tech时都会推送所有记录。
我做错了什么?我已经搜索了几个小时的答案。
干杯
答案 0 :(得分:6)
我认为您正在尝试插入那些已经不存在于该表中的技术人员,因此查询将是这样的
INSERT INTO technicians (techID, tech_surname, tech_firstname, tech_loginid, tech_passwrd, tech_accesslevel)
SELECT loginid, surname, firstname, tech_loginid, passwrd, accesslevel
FROM users
LEFT OUTER JOIN technicians ON loginid = tech_loginid
WHERE accesslevel='tech' and tech_loginid IS null
答案 1 :(得分:1)
你可以尝试
INSERT INTO technicians
(techID, tech_surname, tech_firstname, tech_loginid, tech_passwrd, tech_accesslevel)
SELECT
GetTechId(),surname, firstname, loginid , passwrd, accesslevel FROM users u
WHERE
NOT EXISTS (select 1 from technicians t where t.loginid=u.loginid) and
u.accesslevel='tech'.