2012-04-05 13 views
0

Ich habe eine Abfrage, die Daten aus mehreren Slave-Tabellen in einem einzigen Master-Tabelle vermittelt. Hier ist ein Beispiel von einem meiner Anfragen:MySQL mehrere Felder mit IS NOT NULL Auswahl funktioniert nicht

$insert = mysql_query(" 
INSERT IGNORE INTO master (title, description, keywords, url, uniqueid, city, state, zip, datetime, expiretime) 
SELECT title, description, keywords, url, uniqueid, city, state, zip, datetime, expiretime 
FROM slave1 WHERE zip IS NOT NULL AND keywords IS NOT NULL AND city IS NOT NULL") or die(mysql_error()); 

Nachdem diese Abfrage ausgeführt wird, Datenzeilen eingefügt werden in master mit entweder einige oder alle FelderNULL, wo ich sie NOT NULL (die Felder sein angegeben , city)

Es scheint wie mysql ignoriert den IS NOT NULL Parameter. Kennt jemand eine Lösung?

+0

Können Sie ein Beispiel aus Ihren Daten zeigen? –

+4

Sind Sie sicher, dass die eingegebenen Daten tatsächlich 'NULL' sind und nicht nur eine leere Zeichenfolge? –

Antwort

2

Versuchen Sie ersetzen zip IS NOT NULL-TRIM(zip) <> ""

+0

Diese Antwort plus Michael's macht Sinn und löste das Problem. Danke euch beiden. – Norse

0

Ich vermute uniqueid der Primärschlüssel ist. Wahrscheinlich Ihre Master Tabelle enthält bereits Zeilen mit den gleichen Tasten, die leeren Werte von Stadt haben usw. In diesem Fall sollten Sie anstelle von INSERT IGNORE verwenden ERSETZEN.

Verwandte Themen