选择与单个条件对应的多个行

时间:2016-09-17 17:13:57

标签: mysql sql

我有一个表格,其中 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查询是什么?

感谢。

2 个答案:

答案 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是一个字符串。