У меня есть 2 таблицы в базе данных
- Таблица пользователей имеет столбцы (name, name_ar, ...)
- Таблица профиля пользователя имеет столбцы (user_id, office_id, address, mobile, ...)
отношения между двумя таблицами - отношения один к одному
Теперь я пытаюсь отфильтровать пользователей по их офису и упорядочить их по name_ar. Я попробовал два разных запроса, чтобы сделать это, и я ожидаю того же результата от двух запросов, но результат отличается по порядку.
SELECT
`id`, `name_ar`
FROM
`users`
WHERE EXISTS
(
SELECT
*
FROM
`user_profiles`
WHERE
`users`.`id` = `user_profiles`.`user_id` AND `office_id` = 1
) AND(
`group` = "doctor" AND `state` = "active"
) AND `users`.`deleted_at` IS NULL
ORDER BY
`name_ar` IS NULL, `name_ar` ASC
SELECT
`u`.`id`,
`name_ar`
FROM
`users` u
INNER JOIN `user_profiles` up ON
`u`.`id` = `up`.`user_id`
WHERE
`group` = "doctor" AND `state` = "active" AND `up`.`office_id` = 1
ORDER BY
`name_ar` IS NULL, `name_ar` ASC
результат запроса внутреннего соединения
два результата не имеют одинакового порядка с начала появления нулевого значения в столбце name_ar (с пятой строки точно порядок отличается между двумя результатами). Может ли мне объяснить, почему это бывает? Это из-за нулевых значений или по другой причине?