目前正在做一些SQL查询,我一直在做这个,以便有多个产品到Product表。事情是我意识到' Z'参数在插入的每个值中。有没有办法对代码进行分解,以避免重复3次' Z'?
insert into Product(maker, model, type) values
('Z', 4003, 'Printer'),
('Z', 4001, 'PC'),
('Z', 4002, 'Laptop')
答案 0 :(得分:1)
INSERT .. SELECT
使用CROSS JOIN
:
INSERT INTO product (maker, model, type)
SELECT *
FROM (
SELECT 'Z'
) z
CROSS JOIN (
VALUES (4003, 'Printer'),
(4001, 'PC'),
(4002, 'Laptop')
) v
INSERT INTO product (maker, model, type)
SELECT *
FROM (
SELECT 'Z' FROM DUAL
) z
CROSS JOIN (
SELECT 4003, 'Printer' FROM DUAL UNION ALL
SELECT 4001, 'PC' FROM DUAL UNION ALL
SELECT 4002, 'Laptop' FROM DUAL
) v
答案 1 :(得分:0)
我同意Pala_, 你可以试试......
insert into Product( model, type) values
( 4003, 'Printer'),
( 4001, 'PC'),
( 4002, 'Laptop');
update Product
set maker = 'Z'
where maker is null;
干杯 安德鲁
答案 2 :(得分:0)
您可以在DEFAULT
字段上设置maker
约束,以便在插入新行时为其设置默认值
试试这个:
CREATE TABLE Product(
maker CHAR(1) DEFAULT 'Z'
,model INT
,[type] VARCHAR(10)
)
对于现有表,请尝试:
ALTER TABLE Product
ADD CONSTRAINT df_Product_maker
DEFAULT 'Z' FOR maker
现在,只要您想添加新行,就不需要指定maker
INSERT INTO Product(model, [type]) VALUES (4003, 'Printer')
,(4001, 'PC')
,(4002, 'Laptop')
如果您不想使用maker
值
DEFAULT
添加值
INSERT INTO Product(maker, model, [type]) VALUES ('A', 4003, 'Printer')
我的语法在SQL Server中,因为您没有提到您正在使用的数据库。