[英]MySQL Count values in a column, Update and replace value which has a limit amount
我對MySQL Update語句有疑問。 我表中的條目超過100.000。 因此,我的方法並不成功。 (見下文)
首先,我要計算值的數量(很簡單):
SELECT values1 ,count(values1) FROM table
GROUP BY value1
HAVING COUNT(value1) <= 1000;
其次,我想替換僅出現<= 1000次的列values1的某些值。
因此,我嘗試了以下語句:
Update table as t
SET t.value1 = "limitAmount"
WHERE EXISTS (select value1 from
(select * from table) as f Group by f.value1
Having count(f.value1) <= 1000);
當我嘗試此SQL語句時,我收到:
錯誤代碼1205。超出了鎖定等待超時。 嘗試重新啟動事務。
嘗試這個
Update
table as t
SET
t.value1 = "limitAmount"
WHERE
EXISTS (select value1 from (select * from table) as f where f.value1 = t.value1 Group by f.value1 Having count(f.value1) <= 1000);
注意subquery
where f.value1 = t.value1
條件
該語句有效:
UPDATE test SET val =“ BLUB” WHERE VAL IN(SELECT val FROM(SELECT VAL FROM test GROUP BY val HAVING COUNT(val)<2000)war);
替代方案:
將值添加到單獨的表INSERT INTO helpTable(Value1)(選擇val FROM test Group by val具有count(val)<= 2000);
選擇更新測試為t SET t.val =“不存在”(從helpTable中選擇Value1作為h WHERE t.val = h.Value1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.