Index: wp-includes/meta.php
===================================================================
--- wp-includes/meta.php	(revision 22225)
+++ wp-includes/meta.php	(working copy)
@@ -123,9 +123,6 @@
 	if ( null !== $check )
 		return (bool) $check;
 
-	if ( ! $meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT $id_column FROM $table WHERE meta_key = %s AND $column = %d", $meta_key, $object_id ) ) )
-		return add_metadata($meta_type, $object_id, $meta_key, $passed_value);
-
 	// Compare existing value to new value if no prev value given and the key exists only once.
 	if ( empty($prev_value) ) {
 		$old_value = get_metadata($meta_type, $object_id, $meta_key);
@@ -135,6 +132,9 @@
 		}
 	}
 
+	if ( ! $meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT $id_column FROM $table WHERE meta_key = %s AND $column = %d", $meta_key, $object_id ) ) )
+		return add_metadata($meta_type, $object_id, $meta_key, $passed_value);
+
 	$_meta_value = $meta_value;
 	$meta_value = maybe_serialize( $meta_value );
 
