MySql If заявления - PullRequest
       1

MySql If заявления

1 голос
/ 17 августа 2010

У меня есть простая таблица, которая регистрирует простые события, которые делает администратор. Ничего сложного.

Один из столбцов - userid, поэтому я могу ссылаться на имя пользователя из таблицы пользователей:

SELECT u.username FROM `users` u, `history` h WHERE u.userid = h.userid

Моя проблема в том, что внутренняя система также регистрирует события (как пользователь), но нет идентификатора пользователя, связанного с внутренней системой. Он просто записывается как ноль в записи.

Есть ли способ изменить запрос, чтобы отразить это? Я попытался LEFT JOIN, но это не позволяет мне указать "system" в качестве имени пользователя. Другая вещь, которую я могу сделать, это ввести нового пользователя в таблицу пользователей и назвать его «Внутренняя система». Но я действительно не хочу этого делать.

Возможно ли это сделать на уровне запроса?

1 Ответ

1 голос
/ 17 августа 2010

Использование:

   SELECT COALESCE(u.username, 'SYSTEM') AS username,
     FROM HISTORY h
LEFT JOIN USERS u ON u.userid = h.userid

COALESCE вернет первое значение, отличное от NULL, поэтому, если вы ВСТРЕТИЛИСЬ НА ПОЛЬЗОВАТЕЛЕЙ, а username равно NULL - тогда «system» или что вы предпочитаетепоявляются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...