2012-03-31 11 views
0

Ich habe erfolgreich Daten mit LOAD DATA INFILE einfügen. Danach, wenn ich die Abfrage verwende:NOT IN-Abfrage nach LOAD DATA INFILE ausführen

SELECT * FROM tempupload 
     WHERE columnName NOT IN (SELECT columnName FROM othertable) 

Nicht geben mir das wünschenswerte Ergebnis. Aber wenn ich den columnName-Datentyp in double (und wieder nach varchar) umwandle, gibt das mir erwünschte Ergebnisse.

Bitte führen Sie mich, wie ich diese Abfragen aus meiner Java EE-Anwendung verwenden müssen.

+1

Was sind die Datentypen Ihrer Tabellen? –

+0

varchar (40) der Spalte für Query not in wird ausgeführt – vinay

+0

Verwenden Sie 'LEFT JOIN ... IS NULL' anstelle von' NOT IN() ', es wird fast sicher schneller sein. Wie lauten die Datentypen der beiden Felder, die in der Verknüpfung verwendet werden? Welche Daten werden in diesen beiden Feldern gespeichert? Die Tatsache, dass Sie CAST to DOUBLE und zurück zu VARCHAR ausführen können, würde vorschlagen, dass Sie die falschen Datentypen verwenden. – nnichols

Antwort

0

Wenn Sie irgendwelche NULL in Ihrer anderen Tabelle haben, haben Sie möglicherweise Probleme mit einer NOT IN (siehe this). Um Ihre Abfrage zu verbessern, können Sie versuchen:

SELECT * FROM tempupload 
WHERE EXISTS (SELECT 1 
    FROM othertable 
    WHERE othertable.columnName = tempupload.columnName) 
Verwandte Themen