SQL применяет фильтр к правой таблице.

ужно извлечь все настройки по умолчанию из таблицы настроек, но также получить настройки символов, если они существуют для символа x.

Но этот запрос извлекает только те настройки, где символ = 1, а не настройки по умолчанию, если пользователь никого не установил.

SELECT `settings`.*, `character_settings`.`value`
FROM (`settings`)
LEFT JOIN `character_settings` 
ON `character_settings`.`setting_id` = `settings`.`id`
WHERE `character_settings`.`character_id` = '1'  

Так что мне нужно что-то вроде этого:

array(
    '0' => array('somekey' => 'keyname', 'value' => 'thevalue'),
    '1' => array('somekey2' => 'keyname2'),
    '2' => array('somekey3' => 'keyname3')
)

Где ключи 1 и 2 являются значениями по умолчанию, когда ключ 0 содержит значение по умолчанию со значением символа.

Ответы на вопрос(1)

Ваш ответ на вопрос