Your query is wrong that’s way noting is returned because there is no row in the database that holds more then one meta_key.
What you can do instead is create a Sub Query to get all user id’s of users who live in London as a Sub Query and the use that to filter users id’s of users who are named David, something like this:
$query = "SELECT user_id FROM $wpdb->usermeta
WHERE (meta_value LIKE '%%david%%')
AND (meta_key = 'first_name')
AND user_id IN (SELECT user_id FROM $wpdb->usermeta WHERE (meta_value LIKE '%%london%%') AND (meta_key = 'location'))";
$rows = $wpdb->get_results($query)