本帖最后由 redirggg 于 2012-07-10 23:32:18 编辑

解决方案 »

  1.   

    求指教啊。其实很简单,就是查找meta_key同时等于test与points的uid,然后输出该UID的meta_value。umeta_id    u_id    meta_key    meta_value
    11           1       test        1234
    22           1       points      555   输出这个值
    33           2       vvvv        111
    44           3       fc          test
    66           2       test        333
    77           2       points      77    输出这个值
      

  2.   

    select * from t where meta_key='points' order by meta_value desc limit 15; 
      

  3.   


    感谢jordan102大大,但是这样输出的是meta_key='points'的uid了,我想的是同时meta_key='test',输出points的meta_value值。谢谢
      

  4.   

    这个能同时等吗?同时等就没值了。//查找meta_key同时等于test与point
      

  5.   

    这个意思? 
    select * from t where meta_key in('points','test') order by meta_value desc limit 15; 
      

  6.   


    谢谢jordan102大大。只输出meta_key = points的meta_value值。
      

  7.   


    程序里面判断了uid的几个属性,新增了一个meta_key的值为test,就是想查询
    meta_key in('points','test')
    然后输出meta_key = points的 meta_value
      

  8.   

    输出meta_key = points的 meta_value  用#4的代码就够了。
    显然 meta_key in('points','test') 就多余了。
      

  9.   

    但是这样就达不到效果了,我之前写的如下:select uid,meta_value from t where meta_key='points' order by meta_value desc limit 15; 
    如果这样的话只能输出meta_key='points'的uid。
    现在新增了一个meta_key='test',哪如果使用以下语句:
    select uid,meta_value from t where meta_key in(points,test) order by meta_value desc limit 15; 
    会输出
    uid meta_value
    1   222
    2   333
    1   222 (包含了test)
    其实只想输出:
    uid meta_value
    1   222
    2   333
      

  10.   

    重新编辑了下,可能比较好理解点。数据表如下:
    uid meta_key meta_value
    1 points 123
    1 vip vip
    2 points 22
    2 vip vip
    3 test test 
    4 vip vip
    4 points 100
    4 test test查询vip的用户,然后根据他的points来取top15。
      

  11.   

    自己弄出来了,感谢回答的各位大大。
    select uid from test where meta_key in ('points','vip') and meta_value != 'vip' order by meta_value desc limit 15