Qu'est-ce que l'instruction dans cet exemple? Je suis en train de générer aléatoirement des données
INSERT INTO files (fileUID, filename)
WITH fileUIDS(fileUID) AS
( VALUES(1) UNION ALL
SELECT fileUID+1 FROM fileUIDS WHERE fileUID < 1000 )
SELECT fileUID,
TRANSLATE ( CHAR(BIGINT(RAND() * 10000000000 )), 'abcdefgHij', '1234567890' )
FROM fileUIDS;
BTW, rien à voir avec votre question sur AVEC, en général, rand() renvoie la même valeur pour l'ensemble d'une instruction SQL, maintenant importe le nombre de lignes retournées. Si vous voulez des valeurs différentes, alors: boucle et appel à rand() à chaque itération, appel rand, avec une graine que les modifications apportées par ligne (pas très aléatoire) ou utiliser la fonction NEWID ou NOUVELLE_ID, selon qu'il est. Recherche stackoverflow pour des exemples.
OriginalL'auteur cheesysam | 2009-09-11
Vous devez vous connecter pour publier un commentaire.
La AVEC la syntaxe est la même que d'utiliser un local temp table ou de la vue intégrée. À ma connaissance, c'est uniquement pris en charge dans SQL Server (2005+, a appelé les Expressions de Table Communes) et Oracle (9i+, appelé sous-Requête d'Affacturage). Que ce soit pour la création d'une vue de base qui est utilisé (c'est à dire: joints à) plusieurs fois dans une seule requête.
Voici un exemple typique:
...qui sera de retour des résultats identiques si vous utilisez:
L'exemple que vous avez fournies:
...est récursive. C'est en commençant à 1, générant 999 fileuids au total (il serait de 1000 si elle avait commencé à 0).
Thx, ne savent pas à propos de DB2. Je préfère le CONNECTER PAR la syntaxe de la voir dans d'expressions de table communes ressemble à un hack.
OriginalL'auteur OMG Ponies
Cela va prendre la sortie de la
...
et la traiter comme une table nomméex
, temporairement.Cette déclaration sera essentiellement vous donner exactement la même chose que le
...
des résultats, mais qu'il va plutôt être la référence de la tablex
OriginalL'auteur Joe Phillips
AVEC le mot est utilisé pour créer une Expression de Table Commune (CTE). Dans ce cas, il s'agit de créer une table en ligne que le "select fileUID, ..." la partie est de l'extraction de données à partir d'.
OriginalL'auteur NotMe
C'est la création de CTE (Common Table Expression). C'est fondamentalement une table que vous n'avez pas à créer, supprimer, ou de déclarer, de toute façon. Il sera automatiquement supprimé après le lot a couru.
Découvrez http://4guysfromrolla.com/webtech/071906-1.shtml pour plus d'info.
OriginalL'auteur Mark Callison