MySQL选择IS NOT NULL的多个字段不起作用

I have a query that transfers data from multiple slave tables into a single master table. Here's an example of one of my queries:

$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());

After running this query, rows of data are being inserted into master with either some or all of the fields NULL where I specified them to be NOT NULL (the fields being zip, keywords, and city)

It seems like mysql is completely ignoring the IS NOT NULL parameter. Does anyone know a solution?

Try replace zip IS NOT NULL to TRIM(zip) <> ""

I suspect uniqueid is the primary key. Probably, your master table already contains rows with the same keys, which have empty values of city, etc. In that case you should use REPLACE instead of INSERT IGNORE.