Как создать SQL-Query для обновления данных в таблицах? - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь обновить данные в своей таблице.

У меня есть две таблицы: t1 и t2

T1 first table

T2 second table

Я хочу сделать, чтобы, если t1 имеет id_avito = null и all_usl_name = %usl_name1% и all_tel = %tel1%, а t2 имеет id != null, usl_name = %usl_name1% иtel = %tel1%

Например, t1 после выполнения запроса должен выглядеть так updated t1

update people.t1, people.t2
set 
    id_avito = people.t2.id, 
    lnk_avito = people.t2.link, 
    all_price = people.t2.price,
    all_date = people.t2.date, 
    all_adr = people.t2.adr,
    all_usl_name = people.t2.usl_name 
where id_avito != people.t2.id
and all_tel= people.t2.tel 
and all_usl_type = people.t2.usl_type

Я пытаюсь сделать это, но это не такрабочий

UPD

ПРИМЕР: таблицы .Таблица до обновления, после обновления и вторая таблица

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Попробуйте с обновлением соединения также вам нужно использовать как оператор, где вы ищете строку

update people.t1 a  
join people.t2 on id_avito != people.t2.id
and all_tel= people.t2.tel 
and all_usl_type = people.t2.usl_type
set 
    id_avito = people.t2.id, 
    lnk_avito = people.t2.link, 
    all_price = people.t2.price,
    all_date = people.t2.date, 
    all_adr = people.t2.adr,
    all_usl_name = people.t2.usl_name 
0 голосов
/ 25 марта 2019

Пожалуйста, попробуйте это.

Для SQL

 UPDATE A
 SET 
    A.id_avito = B.id, 
    A.lnk_avito = B.link, 
    A.all_price = B.price,
    A.all_date = B.date, 
    A.all_adr = B.adr,
    A.all_usl_name = B.usl_name 
 FROM 
    people.t1  A
    INNER JOIN people.t2 B
    ON A.id_avito != B.id
    AND A.all_tel= B.tel 
    AND A.all_usl_type =B.usl_type 
where ISNULL(A.id_avito,'') ='' and A.all_usl_name like '%usl_name1%' and A.all_tel like '%tel1%' and B.id is not null and B.usl_name like '%usl_name1%' and B.tel like '%tel1%'

ДЛЯ MYSQL

UPDATE people.t1 a  
INNER JOIN people.t2 B
    ON A.id_avito != B.id
    AND A.all_tel= B.tel 
    AND A.all_usl_type =B.usl_type
   SET 
        A.id_avito = B.id, 
        A.lnk_avito = B.link, 
        A.all_price = B.price,
        A.all_date = B.date, 
        A.all_adr = B.adr,
        A.all_usl_name = B.usl_name 
where IFNULL(A.id_avito,'') = ''  and A.all_usl_name like '%usl_name1%' and A.all_tel like '%tel1%' and IFNULL(B.id,0) <> 0 and B.usl_name like '%usl_name1%' and B.tel like '%tel1%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...