2016-09-17 47 views
1

我有一個表,其中POST_ID包含ID(標識後)多行,META_KEY包含的數據的類型(「緯度」或「經度」 )和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 

在簡單的英語,我需要知道帖子裏緯度14.846329經度42.947395(在這種情況下)

我的ID完全困惑此刻:什麼是MySQL查詢得到正確的結果?

謝謝。

+0

你嘗試過什麼疑問? – mfredy

+0

請指定是否是最高1或最低限度post_ID? –

+0

所以你需要經度和緯度的最大值? –

回答

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是一個字符串。

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

現在,這是獨一無二的:p – Drew

+1

並*與*獨特*你的意思*真棒*;) –

+0

好的答案。在MySQL中,'true' = 1和'false' = 0的解釋會更好。 –