Sélectionnez à partir de plusieurs tables sans une jointure?
Quel est le moyen le plus facile pour sélectionner les données de deux tables et plutôt que de se joindre à eux, de les faire apparaître comme des lignes distinctes. Les deux tables sont similaires ou champs correspondants et je veux exécuter une fonction d'agrégation sur eux comme avg toutes les lignes qui ont eu lieu au cours du même mois, à partir de deux tables.
par exemple, j'ai deux tables, l'une qui montre les transactions à partir d'un système et une autre avec des transactions à partir d'un autre système. Est-il un moyen de récupérer toutes les transactions à partir de deux tables sous forme de lignes séparées? si le tableau 1 a vingt dossiers et le tableau 2 ont trente albums, j'aimerais y être de 50 lignes sur le retour.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer quelque chose comme ceci:
UNION
opération va s'effondrer tous des lignes en double dans le jeu de résultats. Ces lignes en double pourrait être à venir à partir de deux différents Sélectionne, mais ils pourraient aussi être à partir d'un seul de la Sélectionne. LeUNION
opération n'est pas de faire une distinction. Il s'effondre tous des lignes en double dans le jeu. LeUNION ALL
définir l'opérateur évite que (parfois très cher) le fonctionnement de l'identification et de l'effondrement des doublons.La
UNION ALL
opérateur peut être ce que vous cherchez.Avec cet opérateur, vous pouvez enchaîner les jeux de résultats de plusieurs requêtes, la préservation de toutes les lignes de chaque. Notez qu'un
UNION
opérateur (sans leALL
mot-clé) permettra d'éliminer toute "dupliquer" les lignes qui existent dans le jeu de résultats. LeUNION ALL
opérateur conserve toutes les lignes de chaque requête (et fera mieux car elle n'a pas la surcharge de l'exécution de la recherche de doublons et suppression de l'exploitation).Le nombre de colonnes et le type de données de chaque colonne doit correspondre à chacune des requêtes. Si l'une des requêtes a plus de colonnes que de l'autre, nous avons parfois inclure mannequin d'expressions dans une autre requête pour que les colonnes et les types de données "match". Souvent, il est utile d'inclure une expression (une colonne) dans la liste de sélection de chaque requête qui retourne un littéral, révélant des requêtes a été la "source" de la ligne.
Vous pouvez enrouler une requête de ce type dans un jeu de parenthèses, et l'utiliser comme une ligne de vue (ou "dérivé" de table, MySQL lingo), de sorte que vous pouvez effectuer les opérations d'agrégation sur toutes les lignes.
Vous pouvez essayer ce notattion:
Plus compliqué :
Si votre question était -- Select ename, dname DE emp, dept sans l'aide de jointures..
Ensuite, je voudrais faire cela...
De sortie:
Vous devriez essayer ce
Dans ce cas, nous supposons que nous avons deux tables:
SMPPMsgLog
etSMSService
avec colonne communeserviceid
: