sql - Combine two queries to check for duplicates in MySQL? -


i have table looks this:

number  | name  --------+-------- 123     | robert 

this want do:

if number in database, don't insert new record.

if number not in databse, name is, create new name , insert it. example, if have record contains 123 number , bob name, don't want insert it, if record contains 456 number , robert name, insert 456 , robert1. going check duplicates individually like:

select * person number = 123;  //if number not found select * person name = 'robert';  //if name found, add number it. 

is there way can combine 2 statements?

there 2 problems in question. first problem make number column unique , second 1 increment column name appending number if exists.

first part

since number unique, enforce unique constraint on column. primary key or unique key.

if column has no key , want make primary, here alter statement:

alter table tablename add constraint tb_pk primary key (number) 

but if want unique , not primary key,

alter table tablename add constraint tb_uq unique (number) 

second part

you can without using join.

insert tablename(number, name) select  124 number,          concat('robert', coalesce(max(cast(replace(name, 'robert', '0') unsigned)) + 1,'')) name    tablename   name 'robert%' 

some details:

when value supplied on column number exists, throw error since column unique. have read comment deleted posts saying: "..number not unique, if exist, don't want enter record." -- not make sense if don't want add uniqueness on column. how know if number exists or not? doing little check existence of number feels little overhead me. best recommendation enforce uniqueness.


Comments

Popular posts from this blog

java - Jmockit String final length method mocking Issue -

asp.net - Razor Page Hosted on IIS 6 Fails Every Morning -

c++ - wxwidget compiling on windows command prompt -