Как вы можете скопировать строку, исключая значения, где назначение является нулевым? - PullRequest
0 голосов
/ 06 июня 2018

Как мне написать SQL-запрос для копирования всех значений столбцов из строки 1 в строку 2, за исключением столбцов, которые являются пустыми в строке 2?

id  oldNum  newNum  status     time
1   205     333    complete     2018-06-05 13:14:37
2   209     444     null        2018-06-05 13:14:37

Ожидаемый результат будет

id  oldNum  newNum  status     time
1   205     333    complete     2018-06-05 13:14:37
2   205     333     null        2018-06-05 13:14:37

С нулевым статусом.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018
CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE primarykey = 1;
UPDATE tmptable_1 SET primarykey = NULL;
INSERT INTO table SELECT * FROM tmptable_1;
DROP TEMPORARY TABLE IF EXISTS tmptable_1;

В качестве временной таблицы никогда не должно быть более одной записи, поэтому вам не нужно беспокоиться о первичном ключе.Установка его в null позволяет MySQL выбирать само значение, поэтому нет риска создания дубликата.

Если вы хотите быть уверены, что вставляете только одну строку, вы можете добавить LIMIT 1до конца строки INSERT INTO.

Обратите внимание, что я также добавил значение первичного ключа (в данном случае 1) к имени временной таблицы.

0 голосов
/ 06 июня 2018

выбор вставки будет то, что вы ищете

insert into your_table
select * from your_table where id=1
where id = 2

или сохранить это нулевое значение

INSERT INTO your_table (id,oldNum,newNum,time)
SELECT id,oldNum,NewNum,time FROM your_table where id=1
WHERE id=2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...