有一个产品表tbl_products
(product_id=产品id,product_name=产品名,c_id=产品所属类别,add_time=产品生成时间,click_num=产品关注次数)
product_id       product_name     c_id     add_time     click_num表中共有324条记录我现在想写一条语句按c_id 分组,然后取每一组click_num关注次数最高的前三条记录不知要如何写呢
请赐教。

解决方案 »

  1.   

    假设已经生成VIEW1
    SELECT A.c_id,A.click_num
    FROM VIEW1 A LEFT JOIN VIWE1 B
    ON A.c_id=B.c_id AND A.click_num<=B.click_num
    HAVING COUNT(B.c_id)<=3
      

  2.   

    product_id product_name c_id add_time click_num
     1           aaaa         1   201006     10
     2           bbbb         1   201006     22
     3           cccc         2   201005     7
     4           dddd         2   201006     9
     5           eeee         1   201006     13
     6           ffff         1   201005     14
     7           gggg         3   201006     9
     8           hhhh         2   201006     8
     
      

  3.   

    SELECT a.product_id,a.product_name,a.c_id,a.add_time,a.click_num
    FROM tt A LEFT JOIN tt B
    ON A.c_id=B.c_id AND A.click_num<=B.click_num
    group by a.product_id,a.product_name,a.c_id,a.add_time,a.click_num
    HAVING COUNT(B.c_id)<=3
      

  4.   

    想实现有查询结果
    product_id product_name c_id add_time click_num
    2          bbbb         1    201006   22
    6          ffff         1    201005   14
    5          eeee         1    201006   13
    4          dddd         2    201006   9
    8          hhhh         2    201006   8
    3          cccc         2    201005   7
    7          gggg         3    201006   9
      

  5.   

    product_id c_id click_num
    153 3 293
    155 3 238
    156 3 230
    152 3 186
    154 3 168
    60 3 163
    65 3 138
    61 3 109
    64 3 106
    1 6 57
    3 6 53
    2 6 48
    59 6 40
    5 6 38
    130 6 28
    129 6 21
    247 8 2337
    169 8 1549
    170 8 883
    248 8 627
    172 8 401
    396 8 392
    242 8 306
    359 8 272
    356 8 225
    397 8 221
    171 8 186
    196 8 170
    488 8 169
    358 8 155
    241 8 154
    360 8 140
    399 8 139
    398 8 108
    243 8 96
    405 8 78
    426 8 68
    467 8 62
    487 8 59
    403 8 56
    469 8 54
    486 8 53
    404 8 53
    357 8 48
    127 8 41
    441 8 40
    428 8 40
    433 8 39
    12 8 37
    151 8 34
    445 8 32
    444 8 30
    466 8 27
    465 8 25
    425 8 23
    401 8 22
    447 8 20
    408 8 15
    448 8 15
    485 8 14
    468 8 14
    402 8 13
    464 8 13
    432 8 12
    427 8 12
    429 8 11
    446 8 11
    400 8 11
    431 8 10
    430 8 7
    442 8 6
    443 8 5
    134 10 3255
    494 10 341
    133 10 253
    493 10 211
    490 10 134
    546 10 95
    547 10 60
    548 10 58
    489 10 52
    136 10 51
    491 10 32
    549 10 22
    492 10 1
    347 24 332
    422 24 299
    173 25 12127
    21 26 497
    298 26 304
    295 26 99
    297 26 91
    296 26 59
    16 27 10300
    90 28 9048
    81 29 252
    80 29 208
    82 29 39
    421 29 28
    420 29 6
    83 30 428
    84 30 30
    79 33 2
    88 34 8
    176 36 35
    177 36 28
    281 36 20
    205 36 9
    202 36 6
    201 36 5
    206 36 4
    208 36 3
    198 36 3
    197 36 2
    204 36 2
    207 36 1
    203 36 1
    199 36 1
    200 36 1
    283 38 50
    282 38 42
    23 38 24
    434 38 19
    284 38 16
    102 38 16
    436 38 11
    449 38 10
    435 38 8
    108 38 3
    437 38 2
    438 39 8
    440 40 3
    439 40 1
    374 41 18
    369 41 16
    376 41 9
    361 41 7
    370 41 7
    375 41 4
    371 41 3
    363 41 2
    407 41 1
    373 41 1
    362 41 1
    366 41 0
    364 41 0
    309 43 44
    308 43 14
    545 43 13
    345 43 9
    372 43 9
    344 43 6
    310 43 6
    542 43 6
    544 43 4
    343 43 3
    543 43 3
    307 43 2
    140 45 479
    326 45 179
    327 45 145
    329 45 44
    328 45 27
    316 45 26
    336 45 26
    334 45 24
    323 45 24
    335 45 23
    322 45 13
    333 45 9
    317 45 8
    324 45 6
    321 45 6
    313 45 5
    319 45 3
    149 51 67
    148 51 66
    150 51 49
    349 60 283
    300 60 202
    193 60 174
    348 60 157
    132 60 127
    195 60 101
    131 60 84
    353 60 75
    350 60 71
    194 60 57
    351 60 51
    299 60 48
    481 60 39
    22 60 29
    112 60 21
    484 60 18
    410 60 15
    352 60 15
    483 60 13
    409 60 13
    109 60 12
    482 60 9
    244 61 1394
    117 61 234
    412 61 182
    418 61 178
    246 61 128
    245 61 109
    110 61 103
    413 61 83
    411 61 69
    118 61 48
    416 61 44
    44 61 43
    126 61 40
    419 61 38
    114 61 37
    424 61 37
    125 61 36
    8 61 33
    119 61 32
    423 61 29
    417 61 28
    471 61 24
    45 61 23
    120 61 22
    470 61 19
    111 61 15
    496 61 1
    495 61 1
    166 64 0
    167 64 0
    168 64 0
    388 68 19
    392 68 12
    391 68 11
    386 68 9
    394 68 9
    236 68 8
    385 68 7
    234 68 5
    389 68 5
    235 68 3
    393 68 3
    390 68 3
    395 68 2
    383 68 1
    384 68 0
    459 69 2
    461 69 1
    457 69 0
    462 69 0
    456 69 0
    463 69 0
    455 69 0
    229 70 86
    223 70 23
    230 70 15
    209 70 11
    231 70 8
    212 70 7
    211 70 4
    220 70 3
    216 70 3
    214 70 2
    217 70 2
    528 70 2
    517 70 2
    516 70 2
    210 70 1
    514 70 1
    523 70 1
    520 70 1
    524 70 0
    529 70 0
    522 70 0
    519 70 0
    518 70 0
    527 70 0
    525 70 0
    515 70 0
    521 70 0
    526 70 0
    480 71 49
    475 71 24
    476 71 17
    479 71 14
    474 71 13
    478 71 12
    255 71 9
    257 71 7
    477 71 5
    472 71 4
    473 71 4
    256 71 2
    453 71 2
    452 71 1
    454 71 1
    450 71 0
    226 72 42
    280 72 10
    552 72 7
    551 72 5
    550 72 4
    262 74 1296
    252 74 567
    250 74 336
    275 74 280
    274 74 249
    263 74 192
    251 74 180
    249 74 163
    261 74 71
    259 74 61
    258 74 43
    260 74 38
    276 74 7
    277 74 4
    271 74 3
    272 74 2
    555 74 1
    273 74 1
    238 76 54
    239 76 47
    237 76 25
    346 77 0
      

  6.   

    每c_id 取前面三条。。如何取
      

  7.   

    参考下贴中的多种方法http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
    [征集]分组取最大N条记录方法征集,及散分....
      

  8.   

    mysql> select *
        -> from tbl_products a
        -> where 3>(select count(*) from tbl_products where c_id=a.c_id and click_num>a.click_num);
    +------------+------+-----------+
    | product_id | c_id | click_num |
    +------------+------+-----------+
    |        153 |    3 |       293 |
    |        155 |    3 |       238 |
    |        156 |    3 |       230 |
    |          1 |    6 |        57 |
    |          3 |    6 |        53 |
    |          2 |    6 |        48 |
    |        247 |    8 |      2337 |
    |        169 |    8 |      1549 |
    |        170 |    8 |       883 |
    |        134 |   10 |      3255 |
    |        494 |   10 |       341 |
    |        133 |   10 |       253 |
    |        347 |   24 |       332 |
    |        422 |   24 |       299 |
    |        173 |   25 |     12127 |
    |         21 |   26 |       497 |
    |        298 |   26 |       304 |
    |        295 |   26 |        99 |
    |         16 |   27 |     10300 |
    |         90 |   28 |      9048 |
    |         81 |   29 |       252 |
    |         80 |   29 |       208 |
    |         82 |   29 |        39 |
    |         83 |   30 |       428 |
    |         84 |   30 |        30 |
    |         79 |   33 |         2 |
    |         88 |   34 |         8 |
    |        176 |   36 |        35 |
    |        177 |   36 |        28 |
    |        281 |   36 |        20 |
    |        283 |   38 |        50 |
    |        282 |   38 |        42 |
    |         23 |   38 |        24 |
    |        438 |   39 |         8 |
    |        440 |   40 |         3 |
    |        439 |   40 |         1 |
    |        374 |   41 |        18 |
    |        369 |   41 |        16 |
    |        376 |   41 |         9 |
    |        309 |   43 |        44 |
    |        308 |   43 |        14 |
    |        545 |   43 |        13 |
    |        140 |   45 |       479 |
    |        326 |   45 |       179 |
    |        327 |   45 |       145 |
    |        149 |   51 |        67 |
    |        148 |   51 |        66 |
    |        150 |   51 |        49 |
    |        349 |   60 |       283 |
    |        300 |   60 |       202 |
    |        193 |   60 |       174 |
    |        244 |   61 |      1394 |
    |        117 |   61 |       234 |
    |        412 |   61 |       182 |
    |        166 |   64 |         0 |
    |        167 |   64 |         0 |
    |        168 |   64 |         0 |
    |        388 |   68 |        19 |
    |        392 |   68 |        12 |
    |        391 |   68 |        11 |
    |        459 |   69 |         2 |
    |        461 |   69 |         1 |
    |        457 |   69 |         0 |
    |        462 |   69 |         0 |
    |        456 |   69 |         0 |
    |        463 |   69 |         0 |
    |        455 |   69 |         0 |
    |        229 |   70 |        86 |
    |        223 |   70 |        23 |
    |        230 |   70 |        15 |
    |        480 |   71 |        49 |
    |        475 |   71 |        24 |
    |        476 |   71 |        17 |
    |        226 |   72 |        42 |
    |        280 |   72 |        10 |
    |        552 |   72 |         7 |
    |        262 |   74 |      1296 |
    |        252 |   74 |       567 |
    |        250 |   74 |       336 |
    |        238 |   76 |        54 |
    |        239 |   76 |        47 |
    |        237 |   76 |        25 |
    |        346 |   77 |         0 |
    +------------+------+-----------+
    83 rows in set (1.28 sec)mysql>