代码之家  ›  专栏  ›  技术社区  ›  GONeale

在mysql查询中需要每个地区的最低价格

  •  2
  • GONeale  · 技术社区  · 15 年前

    我正试着写一个wordpress的查询,它会给我所有的信息 post_id 是最低的 fromprice 每个字段 region . 现在的诀窍是这些是wordpress中的自定义字段,因此,信息是基于行存储的,因此没有 区域 柱。

    所以我得到的数据是(当然包含更多的行):

    Post_ID | Meta_Key  | Meta_Value
    1       | Region    | Location1
    1       | FromPrice | 150
    2       | Region    | Location1
    2       | FromPrice | 160
    3       | Region    | Location2
    3       | FromPrice | 145
    

    Post_ID | Region | From Price
    1       | Location1 | 150
    3       | Location2 | 145
    

    这将使我能够轻松地迭代post\u id并打印所需的信息,事实上,我很乐意返回post\u id如果其余的更难,我可以在需要时独立获取信息。

    所以你对我的表格结构有一个想法,你可以用下面的作为指导。我以为我有这个,但结果是肯定的,这个查询打印出每个不同的地区与最低的价格发现附在该地区的职位,但职位的id是完全不正确的。我不知道为什么,它似乎只是得到了post\u id的第一个结果并使用了它。

    SELECT  pm.post_id, 
            pm2.meta_value as region, 
            MIN(pm.meta_value) as price 
    FROM `wp_postmeta` pm 
    inner join `wp_postmeta` pm2 
      on pm2.post_id = pm.post_id 
         AND pm2.meta_key = 'region'
         AND pm.meta_key = 'fromprice'
    group by region
    
    2 回复  |  直到 15 年前
        1
  •  1
  •   user359040 user359040    15 年前

    我建议换衣服 MIN(pm.meta_value) 在你的询问中 MIN(CAST(pm.meta_value AS DECIMAL))

    编辑-修改了强制转换语法。

        2
  •  0
  •   Jeremy Goodell    15 年前

    如果不能执行查询,很难理解,但是将您的组更改为:

    group by pm.post_id, region