我有一個名爲SCORPADData的數據庫,它有兩個表:Parts和Failure_Rates。我試圖將部分表中的可修復列設置爲一個布爾值,該值基於譴責率表中的值,該值位於0到100.0之間。 100.0的譴責率意味着該部分不能修復。在其他表上執行SQL更新設置
我這樣做是因爲我被要求帶一個數據庫,並使其可讀取到最初從另一個更新中讀取的軟件。我試圖以兩種不同的方式來做到這一點:使用大小寫,並使用設置爲false的Where。這些陳述如下。
UPDATE SCORPADData.Parts
SET Reparable = CASE
WHEN SCORPADData.Failure_Rates.Part_ID = SCORPADData.Parts.ID AND SCORPADData.Failure_Rates.Condemnation_Rate = 100.0
THEN 'TRUE'
ELSE 'FALSE'
END
FROM SCORPADData.Parts , SCORPADData.Failure_Rates
我得到的錯誤是「找不到列SCORPADDATA.FAILURE_RATES.CONDEMNATION_RATE」。
UPDATE SCORPADDATA.PARTS
SET REPARABLE = TRUE
UPDATE SCORPADDATA.PARTS
SET REPARABLE = FALSE
FROM SCORPADDATA.FAILURE_RATES
WHERE SCORPADDATA.PARTS.ID = SCORPADDATA.FAILURE_RATES.PART_ID
AND SCORPADDATA.FAILURE_RATES.CONDEMNATION_RATE = 100.0
我在這裏得到的錯誤是語法錯誤;它不喜歡我放置FROM。將它放在WHERE之後也不起作用,因爲它找不到列。
在這兩種情況下,我認爲FROM不能正常工作,因爲我希望因爲FAILURE_RATES表未在UPDATE SET語句中使用。我正在使用java應用程序中的H2數據庫。我是SQL新手,所以如果這是我應該知道的,但是我很抱歉,但是在Google(或SO)中搜索WHERE和FROM這樣的詞不會在任何地方找到任何人。
這不支持H2。 – 2012-03-06 05:43:36