Вставить в один столбец, выбрав другой столбец в другой таблице, но как заполнить второй столбец
У меня есть таблица, которая имеет два столбца я бы заполнил один из столбцов, выбрав другие данные столбца таблицы, но как я могу заполнить следующий столбец, потому что я не могу использовать значение. Вот код
INSERT INTO Numbers(number, val) SELECT LaptopID FROM Laptop WHERE Laptop.Pid = 2
Как вы видите, столбец "val" остался пустым, как я могу его заполнить?
6 ответов:
Используйте
NULL
, Если столбец позволяет:INSERT INTO Numbers(number, val) SELECT LaptopID, NULL FROM Laptop WHERE Laptop.Pid = 2
Или используйте предполагаемое (жестко заданное) значение, которое вы хотите.
Если число:
INSERT INTO Numbers(number, val) SELECT LaptopID, 2 FROM Laptop WHERE Laptop.Pid = 2
Или если текст:
INSERT INTO Numbers(number, val) SELECT LaptopID, 'val' FROM Laptop WHERE Laptop.Pid = 2
Если у вас нет соответствующего значения, которое нужно ввести в число; тогда вы можете просто поставить ноль или нуль:
Что-то вроде этого- - -
INSERT INTO numbers (number, val) SELECT NULL, laptopid FROM laptop WHERE laptop.pid = 2
Вы бы добавили его в качестве аргумента на SELECT. Например:
INSERT INTO Numbers(number, val) SELECT LaptopID, 'val' FROM Laptop WHERE Laptop.Pid = 2
ИМХО, вам нужно внутреннее соединение с той другой таблицей, что-то вроде этого:
INSERT INTO Numbers(number, val) SELECT L.LaptopID, OT.OTHER_COLUMN FROM Laptop L INNER JOIN OTHER_TABLE OT ON L.SOME_COLUMN = OT.ANOTHER_SOME_COLUMN WHERE Laptop.Pid = 2
SQLCE не поддерживает обновление нескольких таблиц и т. д., Поэтому я использовал следующий метод
SELECT Laptop.LaptopID, Table2.val FROM Laptop, Table2 WHERE Laptop.Pid = 2 or where laptop.pid= table2.pid
Затем массовая вставка с использованием http://sqlcebulkcopy.codeplex.com/
Надеюсь, это поможет :)