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
到目前为止你都试了些什么?到目前为止你都试了些什么?