我的表是这样的:
id | order_id | product_id
------------------------------------
1 | 356 | 80
2 | 356 | 81
3 | 357 | 77
4 | 357 | 80
5 | 357 | 78
6 | 358 | 90我希望能够做的是在不知道最初有多少行的情况下获取最低的2个order_id值,但我在思考如何创建查询来选择这些行时遇到了麻烦……
SELECT * FROM table ORDER BY order_id ASC
在MySQL中有没有办法做到这一点,它总是返回order_id值最低的行,所以在本例中,我应该返回前2行。如果前两行不存在,那么我应该返回行3-5(总共3行,订单id为357)。
该怎么做呢?
发布于 2016-07-11 13:27:32
聚合函数可以在查询的HAVING子句中使用,因此您应该能够在HAVING子句中使用MIN函数来获取order_id与最低order_id值匹配的所有行:
SELECT * FROM table
HAVING order_id = MIN(order_id)发布于 2016-07-11 13:25:45
请尝试以下操作:
SELECT
*
FROM
table INNER JOIN
(
SELECT MIN(order_id) AS min_order_id
FROM table
) AS t
ON t.order_id = table.order_id;order_id.上的table和此alias t之间创建inner join
发布于 2016-07-11 13:25:53
试试这个:
select *
from yourtable
where order_id in (
select order_id from yourtable order by order_id ASC limit 1
)或者使用join
select t1.*
from yourtable t1
join (select order_id from yourtable order by order_id ASC limit 1) t2
on t1.order_id = t2.order_idhttps://stackoverflow.com/questions/38299617
复制相似问题