Php 使用where in条件从表中获取最新的N个记录数
需要使用WHERE IN条件从与StoreID相关的每个OrderID的表中获取最新的3条记录 例如:Php 使用where in条件从表中获取最新的N个记录数,php,mysql,codeigniter,having-clause,Php,Mysql,Codeigniter,Having Clause,需要使用WHERE IN条件从与StoreID相关的每个OrderID的表中获取最新的3条记录 例如: -------------------------- orderid storeid 1 2 5 2 7 2 15 5 18 5 25 5 29 9 65 9 78
--------------------------
orderid storeid
1 2
5 2
7 2
15 5
18 5
25 5
29 9
65 9
78 9
------------------------
我的问题是:
SELECT * FROM orders WHERE store_id IN('2', '5', '9') ORDER BY store_id
提前感谢。使用row\u编号,您可以获得最新的3个OrderID
以下是mysql解决方案,用于为每个存储获取n行数:
SELECT
*
FROM
(
SELECT
store_id,
order_id,
@curRank := CASE WHEN @prevStore = store_id THEN @curRank + 1 ELSE 0 END AS rank,
@prevStore:= store_id AS prevStore
FROM orders a, (SELECT @curRank := 0, @prevStore := NULL) r
WHERE store_id IN('2', '5', '9')
ORDER BY 1 desc,2
)a
WHERE a.rank<3;
我同意你的回答,但他的形象似乎暗示了其他东西:-是的,我想是的。op似乎将此查询转换为orm。latest表示日期/时间?或者别的什么?@M.Hemant order by orderid您可以通过orderid desc的订单来完成这项工作,那么现在是什么阻止了您
SELECT
*
FROM
(
SELECT
store_id,
order_id,
@curRank := CASE WHEN @prevStore = store_id THEN @curRank + 1 ELSE 0 END AS rank,
@prevStore:= store_id AS prevStore
FROM orders a, (SELECT @curRank := 0, @prevStore := NULL) r
WHERE store_id IN('2', '5', '9')
ORDER BY 1 desc,2
)a
WHERE a.rank<3;