但是这样就达不到效果了,我之前写的如下: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
重新编辑了下,可能比较好理解点。数据表如下: 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。
自己弄出来了,感谢回答的各位大大。 select uid from test where meta_key in ('points','vip') and meta_value != 'vip' order by meta_value desc limit 15
11 1 test 1234
22 1 points 555 输出这个值
33 2 vvvv 111
44 3 fc test
66 2 test 333
77 2 points 77 输出这个值
感谢jordan102大大,但是这样输出的是meta_key='points'的uid了,我想的是同时meta_key='test',输出points的meta_value值。谢谢
select * from t where meta_key in('points','test') order by meta_value desc limit 15;
谢谢jordan102大大。只输出meta_key = points的meta_value值。
程序里面判断了uid的几个属性,新增了一个meta_key的值为test,就是想查询
meta_key in('points','test')
然后输出meta_key = points的 meta_value
显然 meta_key in('points','test') 就多余了。
如果这样的话只能输出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
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。
select uid from test where meta_key in ('points','vip') and meta_value != 'vip' order by meta_value desc limit 15