Как вставить данные в определенный столбец без нулей в других столбцах?
у меня есть таблица ("table1") с 3 столбцами, называемыми col1, col2 и col3 (каждый VARCHAR) с 4 значениями, как показано ниже:
col1 col2 col3
datA1 datB1 datC1
datA2
мне нужна возможность добавлять данные в любое время в любой столбец, не влияющий на другие. Очень популярный код в Интернете заключается в том ,что (скажем, нам нужно добавить данные только в столбцы col2 и col3):
INSERT INTO table1 (col2, col3)
VALUES ('datB2', 'datC2');
но он добавляет новые строки, как показано ниже:
col1 col2 col3
datA1 datB1 datC1
datA2
NULL datB2 datC2
что мне действительно нужно, чтобы заполнить строку, начиная с значение " datA2 "в столбце" col1 " с новыми значениями и получить таблицу, как показано ниже:
col1 col2 col3
datA1 datB1 datC1
datA2 datB2 datC2
если бы кто-то мог мне помочь, я был бы очень признателен!!! Спасибо. Арсений.
обновление: Таблица содержит 3 столбца и ответы каждого столбца для определенного типа значений (например: имя, цвет, размер). Мне нужна только возможность добавлять новые значения в любое время в определенный столбец и иметь их без Null и новых строк, если раньше у него была Свободная ячейка.
6 ответов
учитывая структуру таблицы, с двумя рядами данных:
key value
--------------------
team accounts
manager jeff
каждый раз, когда вы хотите изменить значение, вам нужно проверить, есть ли оно уже (для обновления) или нет (для вставки). Итак, чтобы изменить значение manager
свойства:
if exists(select * from keyValues where key = 'manager')
update keyValues set value = 'mike' where key = 'manager'
else
insert into keyValues ('manager', 'mike')
Я нашел решение (цепочка логических операций):
1) CHECK
Если есть ячейка (в целевом столбце) со значениями либо ""
или NULL
.
2) IF
у него есть один из тех, кто затем переписывает первый, сохраняя значения других ячеек в этой строке на своих местах (предположительно, мы используем UPDATE
))) ).
3) ELSE
просто добавьте новую строку со всеми NULL
s в другой ячейке в строке.
если мы хотим добавить несколько значений в различные столбцы одновременно мы можем подготовить наши запросы для всех из них, а затем выполнить их одновременно (извините за тавтологию).
если нам нужно добавить несколько значений в один столбец в рамках одного запроса, мы можем подготовить его, используя циклы (повторяя пункты 1 и 2 (или, необязательно, 3).
вам придется использовать UPDATE
оператор, если вы хотите добавить данные в существующую строку. Как это, например:
UPDATE table1 SET
col2 = 'data5'
col3 = 'data6'
FROM table1
WHERE col1 = 'data4'
также похоже, что корень вашей проблемы-плохой дизайн базы данных, но этот запрос просто показывает, как добавить данные в существующую строку.
используйте это, если значение null
затем вставить пустое значение.
$cal1=$cal1 ? "data5" : '';
$cal2=$cal2 ? "data6" : '';
INSERT INTO table1 (col2, col3)
VALUES ("'.$cal1.'", "'.$cal2.'");