繁体   English   中英

mysql查询到是否存在更新否则插入没有唯一ID的查询

[英]mysql query to if exists update else insert query without unique id

我需要一个mysql查询来更新数据(如果存在),否则插入没有唯一ID的数据。

其实我有这样的桌子

    id  company_ID  Employee_ID Name        Relationship    Dob     Age Gender       
    1   EMPL        00001       Choodamani  Spouse      11-Aug-66   49  Female            
    2   EMPL        00001       Komala      Mother      30-Oct-39   76  Female            
    3   EMPL        00001       Varshini    Daughter    29-Apr-04   11  Female            
    4   EMPL        00001       Vasudevan   Employee    15-Jul-62   53  Male    
    5   EMPL        00002       Siddharth   Son         1-Jun-00    15  Male              
    6   EMPL        00002       Poongavanam Mother      21-Oct-39   76  Female            
    7   EMPL        00002       Aruna       Spouse      16-Sep-68   47  Female            
    8   EMPL        00002       Abirami     Daughter    7-May-97    18  Female            
    9   EMPL        00002       Murali      Employee    7-Oct-67    48  Male

如果插入这样的数据,

        id  company_ID  Employee_ID Name        Relationship    Dob     Age Gender       
        1   EMPL        00001       Choodamani  Spouse      11-Aug-70   45  Female            
        2   EMPL        00001       Nirmal      Son      30-Oct-39   76  Female

在上面我更新了第一位员工DobAge ,在第二个id 2中,您可以看到正在为同一位员工插入新数据

在这里我需要的是,如果存在则更新数据,否则作为新数据插入而没有唯一性,我需要对此进行查询

在此表中,我没有任何唯一字段,仅id字段具有primary keauto increment

目前正在使用此查询来插入

INSERT INTO employee (company_id, employee_id, name, relationship, dob, age, gender) VALUES ('$company_id','$employee_id', '$name', '$relationship', '$dob', '$age', '$gender') 

在两列employee_idnamerelationship上创建一个唯一键:

CREATE UNIQUE INDEX empid_name ON employee (employee_id, name, relationship);

例如,如果员工有一个与父亲同名的儿子,我就在钥匙上添加了relationship

然后,您可以使用INSERT INTO employee ... ON DUPLICATE KEY UPDATE ...来添加或更新行,具体取决于该行是否已存在。

您在注释中声明的唯一区别因素是姓名+ employee_id。 这是一些证明这一点的代码:

CREATE TABLE employee (
    id INT(11) PRIMARY KEY AUTO_INCREMENT,
    company_ID varchar(32),
    Employee_ID  INT(11),
    Name varchar(32),
    Relationship varchar(32),
    Dob varchar(32),
    Age INT(11),
    Gender varchar(32),
    UNIQUE KEY employee_id_name (Employee_ID, Name)
);

INSERT INTO employee VALUES

    (1,   'EMPL',        00001,       'Choodamani',  'Spouse',      '11-Aug-66',   49,  'Female'),            
    (2,   'EMPL',        00001,       'Komala',      'Mother',      '30-Oct-39',   76,  'Female'),           
    (3,   'EMPL',        00001,       'Varshini',    'Daughter',    '29-Apr-04',   11,  'Female'),            
    (4,   'EMPL',        00001,       'Vasudevan',   'Employee',    '15-Jul-62',   53,  'Male'),    
    (5,   'EMPL',        00002,       'Siddharth',   'Son',         '1-Jun-00',    15,  'Male'),              
    (6,   'EMPL',        00002,       'Poongavanam', 'Mother',      '21-Oct-39',   76,  'Female'),            
    (7,   'EMPL',        00002,       'Aruna',       'Spouse',      '16-Sep-68',   47,  'Female'),           
    (8,   'EMPL',        00002,       'Abirami',     'Daughter',    '7-May-97',    18,  'Female'),            
    (9,   'EMPL',        00002,       'Murali',      'Employee',    '7-Oct-67',    48,  'Male');


INSERT INTO employee (company_id, employee_id, name, relationship, dob, age, gender) VALUES ('EMPL',        00001,       'Choodamani',  'Spouse',      '11-Aug-70',   45,  'Female')
ON DUPLICATE KEY UPDATE company_id=VALUES(company_id), employee_id=VALUES(employee_id), name=VALUES(name), relationship=VALUES(relationship), dob=VALUES(dob), age=VALUES(age), gender=VALUES(gender);

INSERT INTO employee (company_id, employee_id, name, relationship, dob, age, gender) VALUES ('EMPL',        00001,       'Nirmal',      'Son',      '30-Oct-39',   76,  'Female')
ON DUPLICATE KEY UPDATE company_id=VALUES(company_id), employee_id=VALUES(employee_id), name=VALUES(name), relationship=VALUES(relationship), dob=VALUES(dob), age=VALUES(age), gender=VALUES(gender);

产量

在PHP中使用:

INSERT INTO employee (company_id, employee_id, name, relationship, dob, age, gender) VALUES ('$company_id','$employee_id', '$name', '$relationship', '$dob', '$age', '$gender') ON DUPLICATE KEY UPDATE company_id=VALUES(company_id), employee_id=VALUES(employee_id), name=VALUES(name), relationship=VALUES(relationship), dob=VALUES(dob), age=VALUES(age), gender=VALUES(gender)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM