Supposons que j'ai un tableau 1 comme ci-dessous:UPDATE dans plusieurs lignes d'une colonne avec des données d'une autre table dans MySQL
CREATE TABLE IF NOT EXISTS table1
(
table1_id INT NOT NULL,
field1 INT DEFAULT NULL,
field2 INT DEFAULT NULL,
FOREIGN KEY (field1) REFERENCES fields(field_id),
FOREIGN KEY (field2) REFERENCES fields(field_id),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
et table2:
CREATE TABLE IF NOT EXISTS table2
(
table2_id INT NOT NULL,
another_id INT NOT NULL,
field1 INT DEFAULT NULL,
PRIMARY KEY (table2_id , another_id),
FOREIGN KEY (another_id) REFERENCES table1(table1_id),
FOREIGN KEY (field1) REFERENCES fields(field_id),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
J'ai rempli de données, les colonnes table1_id
field1
, field2
du tableau 1 et table2_id
, another_id
du tableau 2.
Ce que je veux faire est de remplir avec des données la colonne field1
de table2. La chose est que je veux que ce soit la valeur field1
de table1 ou field2
de table1. Je veux que ce soit aléatoire. Si l'un des deux est NULL, sélectionnez l'autre, si les deux sont NULL.
Je peux simplement créer quelques requêtes UPDATES et faire les choses correctement. Malheureusement, je ne peux pas provoquer la table2 a plus de 5k lignes et je peux faire des requêtes UPKATE 5k. De plus je ne suis pas exactement sûr de savoir comment faire en sorte que MySQL choisisse au hasard l'un des deux champs de table1 comme décrit ci-dessus. Permettez-moi de vous donner ci-dessous un exemple de requête de ce que ce serait.
(je ne sais pas comment sélectionner au hasard des colonnes et des conditions, donc je vais laisser ça dans ma requête - Supposons que sur la condition aléatoire le résultat a été de sélectionner field1)
UPDATE table2 SET table2.field1 = (SELECT table1.field1 FROM table1 WHERE table1_id = another_id) WHERE another_id = X;
Je devrais répéter ce qui précède pour beaucoup de X différents.
Donc la question est de savoir comment remplir le field1 of table2
avec soit field1 or field2 from table1
avec les conditions décrites ci-dessus pour de nombreuses valeurs X?
Vous avez pas ajouté le « non nulle » part, si vous voulez modifier votre anwser pour que je puisse l'accepter :) Ok –
, voir ma réponse éditée. – kmoser