0

我有一个看起来像这样的表:

meta_id post_id     meta_key    meta_value
271     4   _aciudad             New york
270     4   _apais               USA
267     10  _aservicio           Alojamiento

...
261     43  _apais               USA
238     43  _aciudad             Chicago
262     43  _aservicio           Alojamiento
...
261     43  _apais               USA
238     43  _aciudad             Miami
262     43  _aservicio           Alojamiento

我需要做的是显示与 Country > City 匹配的所有寄存器。或者按国家/地区订购所有 _aciudad 寄存器,例如:

meta_id post_id  meta_key   meta_value       meta_key    meta_value 
235      42      _aciudad        New York     _apais       USA
236      56      _aciudad        Chicago      _apais       USA
237      57      _aciudad        Miami        _apais       USA
238      58      _aciudad        Sidney       _apais      Australia
238      59      _aciudad        Melbourne    _apais      Australia

我不知道该怎么做,我猜是用 INNER JOIN 吗?双重选择?请帮我!!

4

4 回答 4

1

我不确定这是否是您要查找的内容,或者 JOIN ON 字段是否正确,因为您的问题不是很清楚,但是这个查询呢?

SELECT City.meta_id
     , City.post_id
     , City.meta_key
     , City.meta_value
     , Country.meta_key
     , Country.meta_value
  FROM yourTable City
INNER JOIN yourTable Country ON City.post_id = Country.post_id
WHERE City.meta_key = '_aciudad' AND Country.meta_key = '_apais'
ORDER BY Country.meta_value, City.meta_value
于 2011-03-28T22:11:55.530 回答
1
   SELECT t1.meta_id, 
           t1.post_id, 
           t1.meta_key, 
           t1.meta_value, 
           t2.meta_key, 
           t2.meta_value 
    FROM table t1, table t2  
    WHERE t1.post_id = t2.post_id 
    AND t1.meta_key = '_apais'
    AND t2.meta_key = '_aciudad'
    ORDER BY t1.meta_key
于 2011-03-28T22:13:13.367 回答
0
SELECT  mc.*, mp.meta_key, mp.meta_value
FROM    meta mc
JOIN    meta mp
ON      mp.post_id = mc.post_id
        AND mp.meta_key = '_apais'
WHERE   mc.meta_key = '_aciudad'
ORDER BY
        mp.meta_value, mc.meta_value
于 2011-03-28T22:11:37.210 回答
0

尝试自加入。为了使它工作,你必须为表使用别名,所以你可以引用它两次。

像这样的东西:

select

  t1.meta_id, t1.post_id,
  t1.meta_key, t1.meta_value, 
  t2.meta_key, t2.meta_value

from TableName t1
  inner join TableName t2
  on t1.meta_id = t2.meta_id and t1.post_id = t2.post_id
    and t1.meta_key = "_aciuidad" and t2.meta_key = "_apais"
于 2011-03-28T22:13:03.337 回答