2017-05-02 5 views

Antwort

0

Vielleicht zufällig zuordnen? Angenommen, Sie haben genügend Zeilen, so dass die resultierende Verteilung einheitlich ist.

CASE ROUND(RAND() * 2,0) 
    WHEN 0 then 'A' 
    WHEN 1 then 'B' 
    WHEN 2 then 'C' 
END CASE as Result 
2

Vermutlich ist es eine einmalige Sache hier ist eine Möglichkeit, es zu tun:

UPDATE table1 SET category = 'A' WHERE category IS NULL ORDER BY RAND() LIMIT X; 
UPDATE table1 SET category = 'B' WHERE category IS NULL ORDER BY RAND() LIMIT X; 
UPDATE table1 SET category = 'C' WHERE category IS NULL; 

wobei X eine 1/3 der gesamten Zeilen in Ihrer Tabelle ist

SELECT FLOOR(COUNT(*)/3) x FROM table1; 
0

Eine weitere Option Um dies in einer einzigen Anweisung zu tun, ohne vorher Ihre Datensatzanzahl wissen zu müssen:

UPDATE table, (select @s:=0) as s 
    SET category = 
     CASE 
      WHEN MOD(@s:[email protected]+1, 3)=1 THEN 'A' 
      WHEN MOD(@s, 3)=2 THEN 'B' 
      ELSE 'C' 
      END; 

Mit einer Variablen, um eine Zeilennummer zu erstellen, können wir dann ihren Wert mit mod() überprüfen, um einen von drei Werten zu erhalten. Wenn Sie in Ihrer Tabelle ein Autoinkrement-Feld haben, das sequenziell ist und keine gelöschten Zeilen enthält, können Sie das anstelle der Variablen verwenden.

Verwandte Themen