Mysql 为每个客户端选择最后3个条目,并将其插入到列中

Mysql 为每个客户端选择最后3个条目,并将其插入到列中,mysql,ms-access,Mysql,Ms Access,需要您在以下方面的帮助:需要为每个客户端选择最后三条注释,并将其插入到列中。因此,输入如下所示: ID| Client_ID| Comment_Date| Comments| 1| 1| 29-Apr-13| d| 2| 1| 30-Apr-13| dd| 3| 1| 01-M

需要您在以下方面的帮助:需要为每个客户端选择最后三条注释,并将其插入到列中。因此,输入如下所示:

ID| Client_ID|        Comment_Date|          Comments|  
1|          1|           29-Apr-13|                 d|  
2|          1|           30-Apr-13|                dd|   
3|          1|           01-May-13|               ddd|  
4|          1|           03-May-13|              dddd|  
5|          2|           02-May-13|                 a|  
6|          2|           04-May-13|                aa|  
7|          2|           06-May-13|               aaa|  
8|          3|           03-May-13|                 b|  
9|          3|           06-May-13|                bb|  
10|         4|           01-May-13|                 c|
我需要得到的输出如下:

Client_ID|  Last comment|   (Last-1) comment|   (Last-2) comment|  
        1|          dddd|                ddd|                 dd|  
        2|           aaa|                 aa|                  a|  
        3|            bb|                  b|   
        4|             c|       

求求你,救命

如果您不认为可以通过SQL请求获得此信息。也许你可以,但我认为使用PHP更容易。例如,您可以通过以下请求获得您的评论:

SELECT * FROM Comment
WHERE Client_ID = ?
LIMIT 0,3
ORDER BY Date DESC
它将返回用户的最后三条评论。然后,你可以用它做任何你想做的事

希望能有所帮助。

选择x*
SELECT x.*
  FROM my_table x 
  JOIN my_table y 
    ON y.client_id = x.client_id 
   AND y.id >= x.id 
 GROUP 
    BY x.client_id
     , x.id 
HAVING COUNT(*) <=3;
从我的表x 加入我的桌子 在y.client\u id=x.client\u id上 和y.id>=x.id 组 由x.client_id提供 ,x.id
拥有COUNT(*)你可以,而且,这非常简单。这将使他在每个组中排名前三,但你仍然必须将其转换为交叉表查询。是的-除非我在应用程序级别处理,否则草莓,谢谢你的代码!谜题的第一部分已经解决了!那么,如何将其转换为交叉表并获得最终结果呢?如前所述,我认为最好在应用程序级别处理数据显示问题(而不是数据存储和检索问题)(例如,使用一点PHP)。也就是说,pivot表查询在这些fair Wall中已经被覆盖了很多次了!