2016-04-25 6 views
1

Ich mag einen Text anders für ein Feld SET ich versuche, diese Art von CodeUPDATE ORDER BY RAND() LIMIT 100

SET @rand = 100; 
UPDATE myTable SET name = 'a' ORDER BY RAND() LIMIT @rand; 
UPDATE myTable SET name = 'b' ORDER BY RAND() LIMIT @rand; 
UPDATE myTable SET name = 'c' ORDER BY RAND() LIMIT @rand; 

Ich erhalte einen Fehler

1221 - Falsch Verwendung von UPDATE und ORDER BY

dank für

Antwort

0

mitzuhelfen ich Als Wenn Sie beispielsweise eine Tabellenspalte mit dem Zufallswert aktualisieren möchten, können Sie dazu einfach eine update Abfrage durchführen.

$sql_update = "UPDATE table_name SET column_name=RAND()" 

Dies wird Ihre gesamte Tabelle mit dem Rand aktualisieren Wert.Wenn Sie Zufallswert anpassen möchten Sie es Variablen zuweisen und organisieren.

+0

Ich bin nicht auf der Suche nach einer Rand-Nummer, aber für verschiedene Texte im Feld 'name' –

1

Warum aktualisieren Sie mit RAND(). Es wird Ihr Update verlangsamen? Sortiert nach einer indizierten Spalte wie der Primärschlüssel. Dies ist ein Performance-Killer.

Was ist der Punkt von @rand = 100, wenn Sie genau wissen, wie viele Datensätze Sie auf einmal aktualisieren möchten?

Ich gehe davon aus, dass Sie einen Primärschlüssel id

update myTable set name = 'a' order by id desc limit 100; 
update myTable set name = 'b' order by id desc limit 100; 
update myTable set name = 'c' order by id desc limit 100; 
+0

danke aber ich will nicht durch Sortieren der ID-Spalte, es sollte völlig RAND() ist es egal, ob es ist langsam oder nicht, ich mache es einmal –

+0

@ErickBoileau - Cool, benutze rand() dann. – MontyPython

+0

mit RAND Ich bekomme einen Fehler, es hat nichts mit langsam oder nicht zu tun –

0

Es funktioniert genannt haben!

UPDATE myTable SET name = 'a' ORDER BY RAND() LIMIT 100; 

Das Problem war in meinem komplexen INNER JOIN.

+1

Da Sie Details eines Beitritts aus Ihrer Frage ausgeschlossen haben, ist es unwahrscheinlich, dass jemand Ihnen die richtige Antwort bekommen würde. Möchten Sie in diesem Fall Ihre Frage bearbeiten und die von Ihnen verwendete Abfrage einfügen? Da diese Frage und Antwort in ihrem aktuellen Zustand keine zukünftigen Benutzer –

+0

bedient, war das Problem auch auf SET @rand = 100; –

+0

Selbst noch, Sie haben nicht erklärt, was damit falsch war? –