Ich habe eine Tabelle TableA
mit Spalten [AccountID, Email]
. Ich habe eine andere Tabelle TableB
mit [AccountID_1, AccountID_2, email]
. Ich muss die AccountID
in TableA
mit einem der AccountIDs
in TableB
übereinstimmen. Keiner dieser Ansätze scheint zu funktionieren. Der erste scheint zu stagnieren oder dauert ewig (beide Tabellen haben mehrere hunderttausend Einträge). Der zweite der Fehler mit "Can't reopen table: TableB".
MySQL UNION vs JOIN mit OR in Klausel
Versuch JOIN oder
select count(distinct TableA.id) from TableA
JOIN TableB ON TableB.AccountID = TableA.AccountID_1
OR TableB.AccountID = TableA.AccountID_2
;
SQL-UNION
select count(distinct b.id) from (
select * from TableA
join TableB on TableB.AccountID = TableA.AccountID_1
union
select * from TableA
join TableB on TableB.AccountID = TableA.AccountID_2
) as b;
Auf der Gewerkschaft versucht Sie zu sagen vergessen, 'verbinden TableB auf TableB.AccountID ...' die Beim zweiten Mal gibt es einen Fehler. –
Sorry, das war nur ein Fehler beim Versetzen meiner Anfrage in SO. Ich habe es korrigiert. – Asif
Gibt es Indizes für alle 3 'AccountID' * Spalten? Haben Sie 'explain' in der 'join'-Abfrage ausgeführt, um zu sehen, welche Indizes verwendet werden oder nicht? –