簡體   English   中英

需要使用同一數據庫中另一個表中的數據填充一個表

[英]Need to populate one table with data from another table in same database

我試圖用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添加新用戶時,它都會推送所有記錄。

我究竟做錯了什么? 我已經搜索了幾個小時的答案。

干杯

我認為您正在嘗試插入那些已經不存在於該表中的技術人員,因此查詢將是這樣的

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

你可以試試

    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'.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM