Mysql选择并显示两列

时间:2011-12-29 17:33:50

标签: mysql select

我想提取两种类型的数据,这些数据存储在我的表的同一列中,并将其显示在两列中。我做了很多搜索并做了很多测试,但没有任何效果。 这可能很容易......

这是我的表:

| 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        | 

我希望通过加入user_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       |

如何在一个包含两列的表中显示此数据?

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

Bassam的答案一切都很好,但它并不是世界上最有效的事情。您可以像这样简化查询:

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

通过这种方式,您不会拉入子查询,并且您的查询更清晰一些,至少对我而言。