from my comment above:
I can do this now with two separate queries, but it would be nice to be able to do it in one. Still, this is progress. The first query is like this:
DELETE wp FROM wp_posts wp LEFT JOIN wp_postmeta pm ON pm.post_id = wp.ID WHERE pm.meta_key = 'state' AND pm.meta_value != 'CA';
And the second (to clean up the orphan metadata) is like this:
DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL