我正在嘗試使用包含相同值的記錄數來更新.mdb表中的記錄。ADO SQL更新表與查詢組的結果
下面的SQL不起作用,但我認爲給出了我試圖實現的內容。
UPDATE table1 AS A
INNER JOIN (SELECT PH_BSP , Count(PH_BSP) AS PHCOUNT FROM table1 GROUP BY PH_BSP) AS B
ON A.PH_BSP=B.PH_BSP
SET A.PH_SORT = B.PHCOUNT;
任何想法?
我正在嘗試使用包含相同值的記錄數來更新.mdb表中的記錄。ADO SQL更新表與查詢組的結果
下面的SQL不起作用,但我認爲給出了我試圖實現的內容。
UPDATE table1 AS A
INNER JOIN (SELECT PH_BSP , Count(PH_BSP) AS PHCOUNT FROM table1 GROUP BY PH_BSP) AS B
ON A.PH_BSP=B.PH_BSP
SET A.PH_SORT = B.PHCOUNT;
任何想法?
如果您在訪問這樣做,你需要使用域聚合函數:
UPDATE table1
SET PH_SORT = DCount("PH_BSP","Table1","PH_BSP='" & PH_BSP & "'")
上述假設PH_BSP是一個文本字段,刪除單引號,如果它是數字。
你試過類似的東西嗎?
update table1 as a
set a.ph_sort = (
select COUNT(b.ph_bsp) as phcount
from table1 b
where b.ph_bsp = a.ph_bsp)
我假設SQL Server在這裏。
但是這個或類似的東西都應該這樣做,我想。
表是一個.mdb數據庫,這樣進出這裏去... 我想上面的SQL卻得到了一個消息: 「操作必須使用一個可更新的查詢」 – brett 2010-05-12 01:56:17
這個消息說有沒有更新的可能去表演。這意味着在某種程度上DML有某個錯誤。實際上,我試圖在示例代碼中設置a.ph_bsp =(select ...)而不是a.ph_sort。也許有這個更新的樣本? – 2010-05-12 02:16:06
@brett:嘗試省略'AS A',也許這就是爲什麼表格變得不可更新的原因 – 2010-05-12 02:32:04
未經檢驗的,但設置了這一論斷正是如此這應該解決您的問題
UPDATE A
SET A.PH_SORT = B.PHCOUNT
From table1 AS A
INNER JOIN (SELECT PH_BSP , Count(PH_BSP) AS PHCOUNT FROM table1 GROUP BY PH_BSP) AS B
ON A.PH_BSP=B.PH_BSP
編輯: 你的問題可能是從你的子查詢,我會嘗試把一部分到一個單獨的訪問查詢,看看如何它走了。從內存來看,我用Access和子查詢有很多麻煩,方括號有時也有幫助,但內存不可靠。
+1這也是一種衆所周知的形式,沒想到。 =) – 2010-05-12 03:02:42
在訪問這產生: 語法錯誤(缺少運算符)查詢表達式B.PHCOUNT 從表1 AS甲 INNER JOIN(SELECT PH_BSP,COUNT(PH_BSP)AS PHCOUNT FROM表1 GROUP BY PH_BSP)AS乙 上的.PH_BSP = B.PH_BSP – brett 2010-05-12 05:07:05
感謝您的信息。如果域聚合函數是訪問表執行此操作的唯一方法,那麼我認爲它返回到「分組依據」到臨時表中並加入到原始表中。我每天處理成千上萬條記錄(在許多數據庫中),而且DCount速度太慢(比如數小時慢) 再次感謝您的幫助 – brett 2010-05-12 11:17:50