Выберите данные с условием IF, и ЕСЛИ данные не найдены, то вставьте данные с последними вставленными данными 1

#mysql #sql

#mysql #sql

Вопрос:

 1.Select data from table
2.If data not found then insert data into that table with last record data using   1
Table name = demo
Query = Select * from demo where user_id = test4 if not then insert into demo values ('test4','port1 1','port2 1','port3 1','port4 1');
  

Пример :

  ---- -------------------------------- ------------ ---------- ----------- --------- 
| id | user_id                        | port1     | port2  | port3  | port4 |
 ---- -------------------------------- ------------ ---------- ----------- --------- 
|  1 | test1                          | 27        | 72     | 58     | 65   |
 ---- -------------------------------- ------------ ---------- ----------- --------- 
  

Мне нужен вывод, подобный этому:

  ---- -------------------------------- ------------ ---------- ----------- --------- 
| id | user_id                        | port1     | port2  | port3  | port4 |
 ---- -------------------------------- ------------ ---------- ----------- --------- 
|  1 | test1                          | 27        | 72     | 58     | 65   |
 ---- -------------------------------- ------------ ---------- ----------- --------- 
|  2 | test4                          | 28        | 73     | 59     | 66   |
 ---- -------------------------------- ------------ ---------- ----------- --------- 
  

Комментарии:

1. Какой запрос для выбора данных с первого шага?

2. @Jaykishan Solanki: Сработал ли для вас ответ, который я опубликовал?

Ответ №1:

Если я правильно понял, и моя первая попытка была бы,

Тестовые данные:

 CREATE TABLE demo (
    id INT AUTO_INCREMENT,
    user_id VARCHAR(50) NOT NULL,
    port1 int,
    port2 int,
    port3 int,
    port4 int,
    PRIMARY KEY (id)
);

insert into demo(user_id,port1,port2,port3,port4)
values('Test1',10,20,30,40),
('Test2',100,200,300,400)
  

 insert into demo(user_id,port1,port2,port3,port4)
select 'Test4',port1 1,port2 1,port3 1,port4 1
  from demo
 where user_id != 'Test4'
   and not exists (select 1 from demo where user_id = 'Test4')
order by id desc
limit 1
  

DbFiddle