MySQL多层查询

 select user_id,status from mmall_order;
+--------+--------+
| user_id | status |
+--------+--------+
|      1 |     10 |
|      1 |     10 |
|      1 |     40 |
|      1 |     20 |
|      1 |     20 |
|      1 |     10 |
|      1 |     10 |
|      1 |     10 |
|      1 |     10 |
|      1 |     10 |
|      1 |     10 |
|      1 |     10 |
|      1 |     10 |
|      1 |     40 |
|      1 |     40 |
|     29 |     40 |
|     29 |     40 |
|     30 |     10 |
|     30 |     10 |
|     29 |     10 |
|     29 |     10 |
|     29 |     10 |
|     30 |     10 |
|     29 |     10 |
|     29 |     10 |
|     29 |     10 |
|     31 |     10 |
|     31 |     10 |
|     31 |     10 |
|     31 |     20 |
|     35 |     10 |
|     35 |     10 |
|     35 |     20 |
|     31 |     40 |
|     37 |     20 |
|     31 |     10 |
|     31 |     10 |
|     31 |     20 |
|     39 |     10 |
|     40 |     10 |
|     40 |     10 |
|     40 |     10 |
|     31 |     20 |
|     29 |     10 |
|     26 |     10 |
|     41 |     10 |
|     29 |     10 |
|     42 |     10 |
|     42 |     10 |
|     42 |     10 |
|     29 |     10 |
|     44 |     10 |
|     45 |     20 |
|     44 |     20 |
|     44 |     20 |
|     31 |     20 |
+--------+--------+
56 rows in set

select * from 

(select user_id,sum(status) as sus,count(user_id) as cons2 from mmall_order group by user_id ) temps where   temps.sus>0 and user_id in 
  (select user_id from 
  (select user_id,count(user_id) as sus2 from mmall_order group by user_id) temps2 

    where temps2.sus2>0) order by sus desc,cons2 desc limit 2,3;

+--------+-----+-------+
| user_id | sus | cons2 |
+--------+-----+-------+
|     31 | 170 |    10 |
|     44 | 50  |     3 |
|     35 | 40  |     3 |
+--------+-----+-------+

你可能感兴趣的:(MySQL多层查询)