前几天我问了一个解决一个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