我不知道问这个问题是否很奇怪,但是我遇到了我试图找出的问题。我试图在网上浏览任何示例(找不到任何示例),因此导致我在这个论坛中提问。
这就是问题所在:
我有一个看起来像这样的SQL表:
CREATE TABLE product
(
productName VARCHAR(100) PRIMARY KEY NOT NULL,
productDescription VARCHAR(1000) NOT NULL,
"weight" INTEGER NULL,
volume INTEGER NULL,
sizeInformation VARCHAR(1000) NULL,
brandName VARCHAR(100) NOT NULL,
FOREIGN KEY (brandName) REFERENCES brand(brandName)
);
我有一个INSERT
语句,如下所示:
BEGIN TRANSACTION;
INSERT INTO product
VALUES ("Power Gel Laundry Detergent - Anti-Bacterial", "Anti-Bacterial", 10, "Dynamo"),
("Power Gel Laundry Detergent - Anti-Bacterial", "Anti-Bacterial", 15, "CloroxLOL");
COMMIT;
因此,对于第一个INSERT VALUES
语句(其数字为 10 ),我想将该数字 10 放入product(weight)
,然后对于第二条INSERT VALUES
语句(其编号为 15 ),我想将该编号 15 放入product(volume)
。
有什么办法吗?
答案 0 :(得分:4)
我想你想要
insert into product (productName, productDescription, weight, volume, brandName)
values
('Power Gel Laundry Detergent - Anti-Bacterial', 'Anti-Bacterial', 10, null, 'Dynamo'),
('Power Gel Laundry Detergent - Anti-Bacterial', 'Anti-Bacterial', null, 15, 'CloroxLOL');
想法是在目标列表中同时包含两列,并使用null
值调整值列表。
您还可以有两个单独的inserts
语句,它们具有不同的目标列列表(尽管输入的时间更长):
insert into product (productName, productDescription, weight, brandName)
values ('Power Gel Laundry Detergent - Anti-Bacterial', 'Anti-Bacterial', 10, null, 'Dynamo');
insert into product (productName, productDescription, volume, brandName)
values ('Power Gel Laundry Detergent - Anti-Bacterial', 'Anti-Bacterial', null, 15, 'CloroxLOL');
注意:
始终在insert
语句中枚举目标列的列表-如果没有目标列表,数据库希望您提供所有列的值;您原来的查询已经无效(有4个值,而表有6列)
对文字字符串使用单引号而不是双引号(尽管某些数据库支持双字符串)-这是SQL标准,所有数据库均支持
在定义数据库对象(表,列)时避免双引号:它们会使事情变得更复杂,通常没有好处