Mysql 如何从有序数据集中仅获取第一行组

Mysql 如何从有序数据集中仅获取第一行组,mysql,sql,Mysql,Sql,我有一个数据集 | id | field1 | field2 | |----|--------|--------| | 1 | 1 | a | | 2 | 2 | b | | 3 | 1 | c | | 4 | 2 | d | 我想按field1对这个数据集进行排序,并只获取第一个组和单个查询 具体而言: | id | field1 | field2 | |----|--------|--------| |

我有一个数据集

| id | field1 | field2 |
|----|--------|--------|
| 1  | 1      | a      |
| 2  | 2      | b      |
| 3  | 1      | c      |
| 4  | 2      | d      |
我想按field1对这个数据集进行排序,并只获取第一个组和单个查询

具体而言:

| id | field1 | field2 |
|----|--------|--------|
| 1  | 1      | a      |
| 3  | 1      | c      |
如果有任何帮助,我们将不胜感激

SELECT id, field1, field2
  FROM table1
 WHERE field1 = (
   SELECT MIN(field1)
     FROM table1
 )
 ORDER BY id, field2

结果:

| id | field1 | field2 | |----|--------|--------| | 1 | 1 | a | | 3 | 1 | c | |id |字段1 |字段2| |----|--------|--------| |1 | 1 | a| |3 | 1 | c| 一种方法

SELECT id, field1, field2
  FROM table1
 WHERE field1 = (
   SELECT MIN(field1)
     FROM table1
 )
 ORDER BY id, field2

结果:

| id | field1 | field2 | |----|--------|--------| | 1 | 1 | a | | 3 | 1 | c | |id |字段1 |字段2| |----|--------|--------| |1 | 1 | a| |3 | 1 | c|
有很多方法可以做到这一点。选择表中没有小于该行的
字段1
值的值:

SELECT *
FROM data d1
WHERE NOT EXISTS (SELECT *
                  FROM data d2
                  WHERE d2.field1 < d1.field1);
找到
MIN(field1)
值并选择
field1
等于以下值的行:

SELECT *
FROM data
WHERE field1 = (SELECT MIN(field1) 
                FROM data);
在所有情况下,输出都是

id  field1  field2
1   1       a
3   1       c

有很多方法可以做到这一点。选择表中没有小于该行的
字段1
值的值:

SELECT *
FROM data d1
WHERE NOT EXISTS (SELECT *
                  FROM data d2
                  WHERE d2.field1 < d1.field1);
找到
MIN(field1)
值并选择
field1
等于以下值的行:

SELECT *
FROM data
WHERE field1 = (SELECT MIN(field1) 
                FROM data);
在所有情况下,输出都是

id  field1  field2
1   1       a
3   1       c

到目前为止你都试了些什么?到目前为止你都试了些什么?