MySQL запрос на основе результатов другого запроса - PullRequest
0 голосов
/ 19 октября 2018

У меня есть таблица в MySQL, которая выглядит следующим образом.

+---------+------------+--------------+
| user_id |    key     |     value    |
+---------+------------+--------------+
|    1    | full_name  |  John Smith  |
+---------+------------+--------------+
|    1    | is_active  |      1       |
+---------+------------+--------------+
|    1    | user_level |Administrator |
+---------+------------+--------------+

Мне нужно получить значение ключа полное_имя , где user_id равно 1, но только если значение ключа is_active равно 1. Я могу сделать это с 2-мя отдельными запросами, но я хотел бы знать, возможно ли это сделать за один запрос.

Примечание: я не могу изменить структуру таблицы.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Один метод заключается в использовании join s:

select tn.value
from t tn join
     t ta
     on tn.user_id = ta.user_id and ta.key = 'active'
where tn.key = 'fullname';
0 голосов
/ 19 октября 2018

Я думаю, что вам нужно запрос ниже, используя exists

select t.value from your_table t where 
exists ( select 1 from your_table t1
         where t1.user_id=t.user_id 
         and t1.key='is_active'
       ) and t.key='full_name'

DEMO IN MYSQL 8

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