Ich habe zwei Tabellen (T1/T2):
Wie beitreten zwei Tabellen ohne Wiederholung zwei Spalten in MySQL
T1 T2
id | value id | value
1 | 10 1 | 5
2 | 10 2 | 15
3 | 5 3 | 15
4 | 15 4 | 5
5 | 5 5 | 10
ich wähle T2 Aufzeichnungen basierend auf T1 (wenn T1> = Menge der Datensätze mit der gleicher Wert):
SELECT t.id t2_id, t.value value
FROM t2 as t
WHERE
(SELECT COUNT(*) FROM t1 WHERE t1.value = t.value) >= (SELECT COUNT(*) FROM t2 WHERE t2.value = t.value)
Wie erwartet, diese Rückkehr:
t2_id | value
1 | 5
4 | 5
5 | 10
Das Problem ist, wenn ich zu attac bin versucht, h die t1_id
Spalte ohne Wiederholung einer ID. Die Reihenfolge spielt keine Rolle. Also im Grunde suche ich nach dieses Ergebnis:
t1_id | t2_id | value
3 | 1 | 5
5 | 4 | 5
1 | 5 | 10
Jeden Versuch, mit JOIN und Gruppen enden mit den t1_id
der ersten Datensatz für jeden Block Wert abgestimmt.
Es ist verwirrend, dass Sie mit 't1_id' in Ihrem Ergebnis - was die Regel ist, für die man schließen, wenn mehr als 1 zur Verfügung steht? – DaveCoast
@DaveCoast t1_id Müssen nur den gleichen Wert mit t2_id teilen, der Rest ist egal, solange die t1_id und t2_id nie mehr als einmal erscheinen. – user3456020
In Ihren Beispieldaten sind Sie nicht an Wert 15 interessiert, weil es 2 in t2 gibt, aber nur 1 in t1 und Sie nur an 1 Wert 10 in t1 interessiert sind, weil es nur 1 Wert 10 in t2 gibt? –