mysql限制查询逐项出现?

时间:2016-07-10 19:05:56

标签: mysql sql

我需要创建一个查询,只获取每个用户的最后3个帖子。

我有这个问题:

SELECT p.*
FROM post AS p
INNER JOIN customer AS c ON c.id = p.customer
ORDER BY p.created DESC

但那会有我所有的帖子。我需要一个只包含每个用户的3个帖子的集合而不是更多。

2 个答案:

答案 0 :(得分:0)

  SELECT p.*
  FROM post AS p
  INNER JOIN customer AS c ON c.id = p.customer
  ORDER BY p.created DESC LIMIT 3

答案 1 :(得分:0)

MySQL中最简单的方法是使用变量:

SELECT p.*
FROM (SELECT p.*,
             (@rn := if(@c = p.customer, @rn + 1,
                        if(@c := p.customer, 1, 1)
                       )
             ) as seqnum
      FROM post p CROSS JOIN
           (SELECT @c := 0, @rn := 1) params
      ORDER BY p.customer, p.created DESC
     ) p
WHERE seqnum <= 3;

请注意,您没有使用customer中的任何字段,因此除非您使用JOIN进行过滤,否则import UIKit func swapF(inout a:Int, inout with b:Int ) { print(" x = \(a) and y = \(b)") (a, b) = (b, a) print("New x = \(a) and new y = \(b)") } swapF(&5, with: &8) 是不必要的。