(T-SQL)将多个记录插入到表中,并为每个表重新使用子查询外键

我正在尝试为一个项目创建一个可维护的插入脚本,其中包括几个具有外键关系的表。在这种情况下,我有以下表格:

TABLE [dbo].[VehicleMakes]
[VehicleMakeID] [int] IDENTITY(1,1) NOT NULL,[VehicleMakeDesc] [varchar](50) NOT NULL

TABLE [dbo].[VehicleModels]
[VehicleModelID] [int] IDENTITY(1,[VehicleModelDesc] [varchar](50) NOT NULL,[VehicleMakeID] [int] NOT NULL

为简便起见,我排除了外键约束等,因为我对允许我接受此查询的查询逻辑感兴趣:

INSERT INTO VEHICLEMODELS (VehicleModelDesc,VehicleMakeID)
Values
('FLHTC',(SELECT V.VehicleMakeID from VehicleMakes as V where V.VehicleMakeDesc = 'Harley-Davidson')),('RoadKing',('Softail',(SELECT V.VehicleMakeID from VehicleMakes as V where V.VehicleMakeDesc = 'Harley-Davidson'))

,并且有一组全部插入的模型,为Make重新使用了相同的外键子查询(而不是仅复制/粘贴每个模型)

xw7932 回答:(T-SQL)将多个记录插入到表中,并为每个表重新使用子查询外键

为什么不只将MakeID存储在变量中并在插入查询中使用它:

DECLARE @MAKEID INT

SELECT @MAKEID = VehicleMakeID from VehicleMakes where VehicleMakeDesc = 'Harley-Davidson'

INSERT INTO VEHICLEMODELS (VehicleModelDesc,VehicleMakeID)
Values
('FLHTC',@MAKEID ),('RoadKing',@MAKEID),('Softail',@MAKEID )
,

代替一系列78.0.3904.87语句,它可以代替 $objPHPExcel = PHPExcel_IOFactory::load($location); $sheet = $objPHPExcel->getSheet(0); $total_rows = $sheet->getHighestRow(); $total_columns = $sheet->getHighestColumn(); $set_excel_query_all=array(); for($row =2; $row <= $total_rows; $row++) { $singlerow = $sheet->rangeToArray('A' . $row . ':' . $total_columns . $row,NULL,TRUE,FALSE); $single_row=$singlerow[0]; $set_excel_query['store_id']=$single_row[0]; $set_excel_query['employee_uid']=$single_row[1]; $set_excel_query['opus_id']=$single_row[2]; $set_excel_query['item_description']=$single_row[3]; if($single_row[4]) { $set_excel_query['opus_transaction_date']= date('Y-m-d',PHPExcel_Shared_Date::ExcelToPHP($single_row[4])); } $set_excel_query['opus_transaction_num']=$single_row[5]; $set_excel_query['opus_invoice_num']=$single_row[6]; $set_excel_query['customer_name']=$single_row[7]; $set_excel_query['mobile_num']=$single_row[8]; $set_excel_query['opus_amount']=$single_row[9]; $set_excel_query['rq4_amount']=$single_row[10]; $set_excel_query['difference']=$single_row[11]; $set_excel_query['ocomment']=$single_row[12]; $set_excel_query['mark_delete']=$single_row[13]; if($single_row[14]) { $set_excel_query['upload_date']= date('Y-m-d',PHPExcel_Shared_Date::ExcelToPHP($single_row[14])); } $set_excel_query_all[]=$set_excel_query; } print_r($set_excel_query_all); 语句,如下所示:

VALUES

此外,如果您只打算在一个语句中插入相同品牌的行,则可以将其修改为使用CROSS JOIN逻辑:

SELECT ... UNION SELECT ...
本文链接:https://www.f2er.com/3157270.html

大家都在问