我有一个表格,其中 POST_ID 包含ID
(标识帖子), META_KEY 包含数据类型(“纬度< / em>“或”经度“)和 META_VALUE 包含密钥的值。
POST_ID META_KEY META_VALUE
1879 latitude 14.846329
1879 longitude 42.947395
1849 latitude 18.543265
1849 longitude 41.849382
1754 latitude 14.846329
1754 longitude 41.849382
用简单的英语,我需要知道帖子的ID
纬度 14.846329 且经度是 42.947395 (在这种情况下 1879 )
目前我完全感到困惑:获得正确结果的MySQL
查询是什么?
感谢。
答案 0 :(得分:2)
按post_id
分组,只拍摄具有这些值的人
select post_id
from your_table
group by post_id
having sum(meta_key = 'latitude' and meta_value = '14.846329') > 0
and sum(meta_key = 'longitude' and meta_value = '42.947395') > 0
答案 1 :(得分:0)
一种方法使用join
:
select t.post_id
from t tlat join
t tlong
on tlat.post_id = tlong.post_id and
tlat.meta_key = 'latitude' and tlat.meta_value = '14.846329'
tlong.meta_key = 'longitude' and long.meta_value = '42.947395';
注意:这使用单引号,假设meta_value
是一个字符串。