我有这样的表:
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(订单号357共计3行)。
怎么做?
答案 0 :(得分:3)
聚合函数可以在查询的HAVING
子句中使用,因此您应该能够使用{{1获取order_id
与最低order_id
值匹配的所有行MIN
子句中的函数:
HAVING
答案 1 :(得分:2)
请试试这个:
SELECT
*
FROM
table INNER JOIN
(
SELECT MIN(order_id) AS min_order_id
FROM table
) AS t
ON t.order_id = table.order_id;
t
。inner join
和此table
之间设置alias t
order_id
。答案 2 :(得分:1)
试试这个:
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_id