我想提取两种类型的数据,这些数据存储在我的表的同一列中,并将其显示在两列中。我做了很多搜索并做了很多测试,但没有任何效果。 这可能很容易......
这是我的表:
| 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 |
如何在一个包含两列的表中显示此数据?
由于
答案 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
通过这种方式,您不会拉入子查询,并且您的查询更清晰一些,至少对我而言。