2013-09-06 4 views
0
select id, username, email, 
case 
when username = email then 'true' 
else 'false' 
end 
from users 

Есть простой способ сделать when username = email then 'true' as order_col или from users where case = trueSql случай с футляром Сортировать по

Вопрос заключается в сматывании случай AS case, а затем заказать его или использовать Where заявление по этому делу.

+2

Я не понимаю, что вы хотите сделать. Хотите, чтобы ваш результирующий набор заказался равным имени пользователя и электронной почте? –

+0

Итак, вы хотите использовать псевдоним столбца (вы не указали) в 'ORDER BY' и в' WHERE'-clause? –

+0

См. Http://stackoverflow.com/questions/17543771/i-need-a-sql-query-to-get-a-specific-format-as-given-in-example/17543847#17543847 – Romesh

ответ

1
select id, username, email, 
      case when username = email 
        then 'true' 
        else 'false' 
      end as usr_is_email 
from users 
order by usr_is_email 
+0

_ "use Где утверждение в этом случае "_ ;-) –

1

Вы можете использовать псевдоним в ORDER BY, но не в WHERE, так это работает:

SELECT id, username, email, 
     CASE 
     WHEN username = email THEN 'true' 
     ELSE 'false' 
     end AS UserNameIsEmail 
FROM users 
ORDER BY UserNameIsEmail DESC, 
      username ASC 

Если вы хотите использовать в WHERE либо повторить или использовать подзапрос :

SELECT id, username, email, usernameisemail 
FROM (SELECT id, 
       username, 
       email, 
       CASE 
       WHEN username = email THEN 'true' 
       ELSE 'false' 
       end AS UserNameIsEmail 
     FROM users)X 
WHERE X.usernameisemail = 'true' 
ORDER BY username ASC 
Смежные вопросы