Mise à jour de la table SQL avec une valeur aléatoire à partir d'une autre table
Sur Microsoft SQL Server 2008, j'ai une table avec des Produits:
Id | Nom | DefaultImageId
Et une avec des Images:
Id | ProductId | Octets
Je veux exécuter une instruction de mise à Jour, les mises à jour de la DefaultImageId sur tous les enregistrements dans la table Produits avec un Id aléatoire à partir des Images de la table qui est liée à ce Produit via la colonne ProductId.
Quelqu'un peut-il vous aider? Doit être simple pour SQL Champ (ce Qui n'est évidemment pas de moi)..
OriginalL'auteur MartinHN | 2009-08-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire une commande par un NEWID pour obtenir un nombre aléatoire pour chaque ligne de votre mise à jour.
Ce qui a été marqué vers le bas et les commentaires ajoutés en indiquant qu'il ne permet pas de résoudre le problème. Je pense que la confusion vient de là où les gens n'ont pas réalisé la question d'origine demande une image aléatoire être sélectionné pour chaque produit, d'où la clause where Id de Produit. Ont fourni un script complet avec ensemble de données ci-dessous. Il ajoute cinq produits et des trois images pour chaque produit. Au hasard, puis définit la valeur par défaut id de l'image pour chaque produit.
Merci de voir si la solution vient de poster résout ce, @philreed
en quoi n'est-il pas de travail? J'ai mis à jour la réponse avec create table et insérer des données pour prouver qu'il fournit la solution.
Oui, il ne fonctionne pas, toutes mes excuses, je n'ai pas lu la question, j'ai été en regardant à l'attribution aléatoire des valeurs de la table à l'autre.
OriginalL'auteur Robin Day
Adressage @philreed de la question avec la réponse choisie:
Pour l'enregistrement (aucun calembour prévu), ce n'est pas très performante si elle est utilisée contre un grand-ish dataset avec (je suis à jour d'un numéro de téléphone à partir d'une liste de 10000 aléatoire de numéros de téléphone pour brouiller un tableau de 300k membres et je suis actuellement à 33min et je me demandais comment beaucoup plus de temps...)
vous pourriez peut-être poster avec des détails?
Ce n'est pas la bonne réponse car il attribue de façon aléatoire toute Image.Id du Produit.DefaultImageId table, et pas seulement celles qui sont liées au Produit.
Oui, vous avez raison sur qui compter.
OriginalL'auteur jacoblambert
Une autre solution possible
OriginalL'auteur Welly
Vérifier cela.
mes excuses j'ai corrigé.
OriginalL'auteur Raj More
Essayer celui-ci (sur la base de données AdventureWorks):
Il met à jour toutes les lignes de la table personne avec un nouveau nom aléatoire à partir de la table product.
Ou essayez une requête similaire à SQL Violon:
http://sqlfiddle.com/#!3/8b719/1
OriginalL'auteur celper