我在MySQL中有一个看起来像这样的表。
+---------+------------+--------------+
| user_id | key | value |
+---------+------------+--------------+
| 1 | full_name | John Smith |
+---------+------------+--------------+
| 1 | is_active | 1 |
+---------+------------+--------------+
| 1 | user_level |Administrator |
+---------+------------+--------------+
我需要获取键全名的值,其中 user_id 为 1 ,但前提是键的值是有效的是1。我可以通过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'
value
john smith