我對使用SQL還是一個新東西,這個查詢讓我特別被困住了。使用臨時表來查詢和更新現有表
我正在導入一個.CSV
文件到一個臨時表(它只有一列寬,它導入罰款,除了第一行,由於某些原因空白),以更新現有數據庫中的表匹配導入的列。
我遇到的問題是它只匹配導入表中的最後一個條目,並且只更新現有表中的1條記錄。 .CSV
文件是從一個傳播生成的,而這個傳播是從現有數據庫的查詢生成的,所以我知道這些名稱是正確的,它們在臨時表中。
我已經看到了幾個類似的查詢問題/解決方案,並試圖使用他們的解決方案的部分無濟於事,希望這個社區可以幫助我!
if object_id('dbo.namefile', 'u') is not null
drop table dbo.namefile
create table dbo.namefile
(
name varchar(255) not null primary key
--constraint pk_t1_name check(name not like 'zzzzzzz')
)
bulk insert dbo.namefile
from 'f:\list.csv'
with (datafiletype = 'char',
fieldterminator = '","',
rowterminator = '\r',
errorfile = 'f:\inp_err.log')
update dbo.MeasurementLimit
set LowLimit = 1
from namefile as nf
join EntityName as en on en.EntityName = nf.name
join MeasurementLimit as ml on en.uid = ml.UID
where en.EntityName = nf.name
感謝所有幫助
我想這一點,今天早上
select * from namefile
它返回113記錄在list.csv文件
但是,這僅條目的正確數量返回1條記錄
select * from namefile nf
inner join Entityname as en on en.Entityname = nf.listname
個
這是'MySQL'還是'SQL Server'?他們不是一回事。 – Siyual
SQL Server 2014 ..對不起.. – Mitch201
SQL Server 2014 ..對不起.... namefile表只是一個需要更改或更新的名稱列表。它使用entityname表中的entityname列標識(見圖片),然後使用uid列標識測量列表uid列以標識我想要更新該樣本中下限的特定字段(請參見圖片)我期望發生的事情如果temp表中的名稱與entityname表中的名稱相匹配,則它將更新下限到「1」,以便爲temp表中列出的所有名稱關聯名稱。 – Mitch201