簡體   English   中英

MySQL計數列中的值,更新並替換具有限制量的值

[英]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);

替代方案:

  1. 將值添加到單獨的表INSERT INTO helpTable(Value1)(選擇val FROM test Group by val具有count(val)<= 2000);

  2. 選擇更新測試為t SET t.val =“不存在”(從helpTable中選擇Value1作為h WHERE t.val = h.Value1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM