基于另一个查询结果的MySQL查询

时间:2018-10-19 10:54:51

标签: mysql sql

我在MySQL中有一个看起来像这样的表。

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

我需要获取键全名的值,其中 user_id 1 ,但前提是键的值是有效的是1。我可以通过2个单独的查询来完成此操作,但是我想知道是否可以在单个查询中进行此操作。

注意:我无法更改表格的结构。

2 个答案:

答案 0 :(得分:3)

一种方法是使用join

select tn.value
from t tn join
     t ta
     on tn.user_id = ta.user_id and ta.key = 'active'
where tn.key = 'fullname';

答案 1 :(得分:1)

我认为您需要使用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