sql >> Database teknologi >  >> RDS >> Mysql

Fjernelse af dubletter fra resultatet af multiple join på tabeller med forskellige kolonner i MySQL

Jeg ved ikke, om jeg forstår dit problem, men hvorfor bruger du en LEFT JOIN? Historien lyder mere som en INNER JOIN. Intet her kræver en UNION.

[Rediger] OK, jeg tror, ​​jeg kan se, hvad du vil have nu. Jeg har aldrig prøvet det, jeg er ved at foreslå, og hvad mere er, nogle DB'er understøtter det ikke (endnu), men jeg tror, ​​du vil have en vinduesfunktion.

WITH Y2 AS (SELECT Y.*, ROW_NUMBER() OVER (PARTITION BY A) AS YROW FROM Y),
     Z2 AS (SELECT Z.*, ROW_NUMBER() OVER (PARTITION BY A) AS ZROW FROM Z)
SELECT COALESCE(Y2.A,Z2.A) AS A, Y2.C, Y2.D, Z2.E, Z2.F, Z2.G
FROM Y2 FULL OUTER JOIN Z2 ON Y2.A=Z2.A AND YROW=ZROW;
 

Ideen er at udskrive listen i så få rækker som muligt, ikke? Så hvis A1 har 10 indtastninger i Y og 7 i Z, så får vi 10 rækker med 3 med NULL for Z-felterne. Dette virker i Postgres. Jeg tror ikke, at denne syntaks er tilgængelig i MySQL.

Y:

a | d | c ---+---+---- 1 | 1 | -1 1 | 2 | -1 2 | 0 | -1

Z:

a | f | g | e ---+---+---+--- 1 | 9 | 9 | 0 2 | 1 | 1 | 0 3 | 0 | 1 | 0

Output af udsagn ovenfor:

a | c | d | e | f | g ---+----+---+---+---+--- 1 | -1 | 1 | 0 | 9 | 9 1 | -1 | 2 | | | 2 | -1 | 0 | 0 | 1 | 1 3 | | | 0 | 0 | 1

  1. Dumper MySQL-tabeller til JSON med Golang

  2. Hvad er den bedste måde at migrere en Django DB fra SQLite til MySQL?

  3. Konverter 'datetime' til 'time' i SQL Server (T-SQL-eksempler)

  4. hvordan man forhindrer databasen i at tilføje skråstreg til anførselstegn