3 Stimmen

Mysql - Tabellen durch eindeutiges Feld vereinen

Ich habe zwei Tabellen mit der gleichen Struktur:

id name
1 Merry
2 Mike

und

id name
1 Mike
2 Alis

Ich muss die zweite Tabelle mit der ersten vereinigen und dabei die eindeutigen Namen beibehalten, sodass das Ergebnis wie folgt aussieht:

id name
1 Merry
2 Mike
3 Alis

Ist es möglich, dies mit einem MySQL-Query zu tun, ohne ein PHP-Skript zu verwenden?

8voto

Quassnoi Punkte 396418

Dies ist kein Verbund (Mengenmultiplikation), dies ist eine Vereinigung (Mengenaddition).

SELECT  @r := @r + 1 AS id, name
FROM    (
        SELECT  @r := 0
        ) vars,
        (
        SELECT  name
        FROM    table1
        UNION
        SELECT  name
        FROM    table2
        ) q

2voto

Fabian Punkte 13317

Dies wählt alle Namen aus Tabelle 1 aus und kombiniert sie mit allen Namen aus Tabelle 2, die nicht in Tabelle 1 sind.

(
select * 
from table1        
)
union
(        
select * 
from table2 t2 
left join table1 t1 on t2.name = t1.name 
where t1.id is null
)

1voto

OMG Ponies Punkte 312816

Verwendung:

SELECT a.id,
       a.name
  FROM TABLE_A a
UNION
SELECT b.id,
       b.name
  FROM TABLE_B b

UNION entfernt Duplikate.

0voto

douwe Punkte 1297

Wie bereits kommentiert, hängt alles davon ab, was Ihre 'id' bedeutet, denn im Beispiel bedeutet sie nichts.

SELECT DISTINCT(name) FROM t1 JOIN t2 ON something

wenn Sie nur die Namen wollen

SELECT SUM(something), name FROM t1 JOIN t2 ON something GROUP BY name

wenn Sie eine Gruppierung vornehmen möchten

SELECT DISTINCT(name) FROM t1 JOIN t2 ON t1.id = t2.id

wenn die IDs übereinstimmen

0voto

dnagirl Punkte 19738
SELECT DISTINCT COALESCE(t1.name,t2.name) FROM
mytable t1 LEFT JOIN mytable t2 ON (t1.name=t2.name);

liefert Ihnen eine Liste der eindeutigen Namen aus den 2 Tabellen. Wenn Sie möchten, dass sie neue IDs erhalten (wie Alis es in Ihren gewünschten Ergebnissen tut), ist das etwas anderes und erfordert die Beantwortung einiger Fragen:

  • Müssen einige der Namen ihre vorherige ID beibehalten? Und wenn ja, welche Tabelle sollte bevorzugt werden?
  • Warum haben Sie 2 Tabellen mit der gleichen Struktur? Was versuchen Sie zu erreichen, wenn Sie die eindeutige Namensliste generieren?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X