MySQL选择并显示两列

3
我希望能够从同一列中提取两种类型的数据,并在两列中显示。我已经进行了许多搜索和测试,但是没有什么效果。这应该很容易实现...
以下是我的表格:
| id  | field_id | user_id | value            | 
| 175 |       65 |       3 | 48.8984188201264 | 
| 173 |       65 |       2 | 37.9841493       | 
| 177 |       65 |       4 | 48.8440603       | 
| 179 |       65 |       5 | 48.8407529       | 
| 174 |       66 |       2 | 23.7279843       | 
| 176 |       66 |       3 | 2.25568230749569 | 
| 178 |       66 |       4 | 2.3730525        | 
| 180 |       66 |       5 | 2.3213214        | 

我希望您可以通过在用户ID上连接,将纬度(Field_id=65)显示在一个字段中,将经度(field_id=66)显示在另一个字段中。
两个选择:
select value as longitude 
from wp_bp_xprofile_data 
where field_id=66; 

select value as latitude 
from wp_bp_xprofile_data 
where field_id=65;

| longitude        |
| 23.7279843       |
| 2.25568230749569 |
| 2.3730525        |
| 2.3213214        |

| latitude         |
| 48.8984188201264 |
| 37.9841493       |
| 48.8440603       |
| 48.8407529       |

我该如何在一个表格中以两列的形式展示这些数据?
谢谢。

纬度的ID与经度的ID是否相关,且纬度的ID值是否为经度的ID值+1? - Tony Hopkinson
2个回答

2
SELECT t1.user_id, latitude, longitude
FROM
(SELECT user_id, value as latitude 
 FROM wp_bp_xprofile_data 
 WHERE field_id = 65) t1
 INNER JOIN 
(SELECT user_id, value as longitude
 FROM wp_bp_xprofile_data 
 WHERE field_id = 66) t2 ON t1.user_id = t2.user_id

非常感谢!这正是我想要的结果。 - Arystark
很高兴能帮忙,你可能应该编辑你的问题并说明你是基于 user_id 进行连接的,因为我不得不猜测。 - Bassam Mehanni
这对我很有帮助。谢谢@BassamMehanni - Susai

2
巴萨姆的回答很好,但并不是世界上最高效的方法。您可以像这样简化查询:
select
    t1.user_id,
    t1.value as latitude,
    t2.value as longitude
from
    wp_bp_xprofile_data t1
    inner join wp_bp_xprofile_data t2 on
        t1.user_id = t2.user_id
where
    t1.field_id = 65
    and t2.field_id = 66

这样,你就不需要引入子查询了,而且你的查询语句会更加清晰,至少对我来说是这样。


确实,这样更容易理解。谢谢你。 - Arystark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接