前幾天我問了一個解決一個SQL查詢,我需要工作了,我的數據是這樣的:自加入SQL查詢
meta_id post_id meta_key meta_value
269 4 _apais USA
270 4 _aciudad New york
271 4 _aservicio Pleasure
...
272 43 _apais USA
273 43 _aciudad Chicago
274 43 _aservicio Fun
...
275 44 _apais USA
276 44 _aciudad Miami
277 44 _aservicio Night Life
278 45 _apais USA
279 45 _aciudad Miami
280 45 _aservicio Sports
我需要做的,是顯示所有的寄存器與城市和服務相匹配的國家。或ORDER BY全國所有_aciudad寄存器(和_aservicio作爲服務),是這樣的:
meta_id post_id meta_key meta_value meta_key meta_value meta_key meta_value
270 7 _apais USA _aciudad New York _aservicio Pleasure
261 13 _apais USA _aciudad Chicago _aservicio Fun
276 4 _apais USA _aciudad Miami _aservicio Sports
@Ravi Gummadi給我一個解決方案,看起來像這樣:
SELECT t1.meta_id,
t1.post_id,
t1.meta_key,
t1.meta_value,
t2.meta_key,
t2.meta_value
FROM th_postmeta t1, th_postmeta t2
WHERE t1.post_id = t2.post_id
AND t1.meta_key = '_apais'
AND t2.meta_key = '_aciudad'
ORDER BY t1.meta_key
該查詢返回此:
meta_id post_id meta_key meta_value meta_key meta_value
270 7 _apais USA _aciudad New York
261 13 _apais USA _aciudad Chicago
276 4 _apais USA _aciudad Miami
279 10 _apais USA _aciudad Miami
我怎樣才能acchive僅顯示未在meta_value值複製(用於_aciudad和_aservicio只,_apais可以被複制)的記錄?
非常感謝你們!
你想保留哪一行?,這是什麼標準?在你的例子中,我可以選擇'meta_id' 276或279. – Lamak 2011-03-31 17:13:17
我需要顯示_apais,_aservicio,_aciudad和_aciudad必須是DISTINCT(他的值不能重複) – Alberto 2011-03-31 17:19:48
是的,我明白了。但是當'a_ciudad' **被**重複時,您需要選擇一條記錄。這是什麼標準?,因爲他們將在不同的'post_id' – Lamak 2011-03-31 17:23:51