迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

从 MySQL 表中选择第一行

作者:迹忆客 最近更新:2023/04/19 浏览次数:

今天,我们将探讨三种场景及其解决方案,我们希望从 MySQL 表中选择第一行。

在第一个场景中,我们将学习从 MySQL 表中获取第一行,其中特定列有多个实例。 例如,从 manager 表中选择 first_name 为 Mehvish 的第一行。

在第二种情况下,我们将选择每组表中的第一行。 在这里,我们还将了解如何检索与组相关的数据。 在第三个场景中,我们将看到如何从整个 MySQL 表中获取第一行。


从 MySQL 表中选择第一行

在深入代码示例之前,让我们创建一个 manager_id 表,其中 manager_id、first_name 和 last_name 作为字段,其中 manager_id 是主键。

下面给出了创建和填充此表的查询。 您也可以使用这些。

示例代码:

CREATE TABLE manager (
    manager_id INT NOT NULL AUTO_INCREMENT,
    first_name VARCHAR(150) NOT NULL,
    last_name VARCHAR(150) NOT NULL,
    PRIMARY KEY(manager_id)
);

INSERT INTO manager (first_name, last_name)
VALUES
('Mehvish', 'Ashiq'),
('Saira', 'Mushtaq'),
('Thomas', 'Christopher'),
('Thomas', 'Gabrial'),
('Tahir', 'Raza'),
('Saira', 'Johny'),
('Saira', 'Daniel');

SELECT * FROM manager;

输出:

+------------+------------+-------------+
| manager_id | first_name | last_name   |
+------------+------------+-------------+
|          1 | Mehvish    | Ashiq       |
|          2 | Saira      | Mushtaq     |
|          3 | Thomas     | Christopher |
|          4 | Thomas     | Gabrial     |
|          5 | Tahir      | Raza        |
|          6 | Saira      | Johny       |
|          7 | Saira      | Daniel      |
+------------+------------+-------------+
7 rows in set (0.00 sec)

使用 LIMIT 子句从 MySQL 表中检索第一行,其中一列具有多个实例

我们在 manager 表的 first_name 列中有一个 Mehvish 实例、一个 Tahir 实例、两个 Thomas 实例和三个 Saira 实例。 您可以使用 SELECT 语句查看当前表数据。

执行以下语句从 manager 表中获取 first_name 为 Saira 的第一行。

SELECT * FROM manager WHERE first_name = 'Saira' LIMIT 1;

输出:

+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
|          2 | Saira      | Mushtaq   |
+------------+------------+-----------+
1 row in set (0.00 sec)

假设我们要获取 first_name 为 Saira 的第三条记录。 我们使用带两个参数的 LIMIT 子句(在本教程后面解释)。

SELECT * FROM manager WHERE first_name = 'Saira' LIMIT 2,1;

输出

+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
|          7 | Saira      | Daniel    |
+------------+------------+-----------+
1 row in set (0.00 sec)

假设我们想要获取 first_name 为 Saira 的前两条记录。 我们可以这样做。

SELECT * FROM manager WHERE first_name = 'Saira' LIMIT 2;

输出:

+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
|          2 | Saira      | Mushtaq   |
|          6 | Saira      | Johny     |
+------------+------------+-----------+
2 rows in set (0.00 sec)

我们还可以获取 first_name 名称为 Saira 的最后两条记录。 我们将 ORDER BY 子句与 LIMIT 子句一起使用。

SELECT * FROM manager WHERE first_name = 'Saira' ORDER BY manager_id DESC LIMIT 2;

输出:

+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
|          7 | Saira      | Daniel    |
|          6 | Saira      | Johny     |
+------------+------------+-----------+
2 rows in set (0.00 sec)

在这里,了解 LIMITORDER BY 子句的作用至关重要。 LIMIT 子句与 SELECT 语句一起使用以从表中获取一定数量的记录。

LIMIT 子句采用一个或两个必须为正整数或零的参数。 以下是带有一个和两个参数的 LIMIT 子句的语法。

语法:

# Syntax with one argument
SELECT
    your_select_list
FROM
    you_table_name
WHERE
    your_condition
LIMIT row_count;

# Syntax with two arguments
SELECT
    your_select_list
FROM
    your_table_name
WHERE
    your_condition
LIMIT [offset,] row_count;

row_count 显示要返回的记录的最大数量,而当我们要检索特定范围的记录时使用偏移量,例如,从偏移量 2 到 row_count 4。请记住,第一行的偏移量不是 1,而是 0。

请参见下图。

MySQL 选择第一行 - 限制参数说明

记住,LIMIT row_count 和 LIMIT 0, row_count 是等价的。 根据项目要求,ORDER BY 子句对表数据进行降序或升序排序。


使用 IN()、MIN() 和 GROUP BY 从 MySQL 表中获取每个组中的第一行

第二种情况将使用 IN() 和 MIN() 函数以及 GROUP BY 子句从表中选择并获取每个组中的第一行。

示例代码:

SELECT * FROM manager
WHERE
manager_id IN (
    SELECT min(manager_id)
    FROM manager
    GROUP BY first_name
);

输出:

+------------+------------+-------------+
| manager_id | first_name | last_name   |
+------------+------------+-------------+
|          1 | Mehvish    | Ashiq       |
|          2 | Saira      | Mushtaq     |
|          3 | Thomas     | Christopher |
|          5 | Tahir      | Raza        |
+------------+------------+-------------+
4 rows in set (0.08 sec)

此示例使用不同的函数和子句来获得所需的结果。

  1. IN() - 此函数允许我们在 WHERE 子句中指定多个值。 如果表达式等于任何 IN() 列表值,它返回 1。
  2. GROUP BY - 它对包含相同值的记录进行分组,主要用于聚合函数,例如 MIN()MAX()COUNT() 等。
  3. MIN() - 它返回查询中属性(列)的最小值。
  4. 子查询 - 它嵌套在另一个查询中,例如 SELECT、UPDATE、DELETE 等。我们也可以将一个子查询嵌套到另一个子查询(我们需要了解各种子句的执行顺序)。

使用 LIMIT 和 ORDER BY 从整个 MySQL 表中选择第一行

使用 LIMIT 子句从整个表中选择第一行,而不考虑顺序和条件。

SELECT * from manager LIMIT 1;

输出:

+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
|          1 | Mehvish    | Ashiq     |
+------------+------------+-----------+
1 row in set (0.00 sec)

使用带有 LIMIT 的 ORDER BY 从排序数据中获取第一行(按降序排列)。

SELECT * from manager ORDER BY first_name DESC LIMIT 1;

输出:

+------------+------------+-------------+
| manager_id | first_name | last_name   |
+------------+------------+-------------+
|          3 | Thomas     | Christopher |
+------------+------------+-------------+
1 row in set (0.00 sec)

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 MySQL 中声明和使用变量

发布时间:2024/03/26 浏览次数:115 分类:MySQL

当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。

在 MySQL 中实现刷新权限

发布时间:2024/03/26 浏览次数:211 分类:MySQL

本教程介绍了 MySQL 中的刷新权限命令,用于刷新授权表并影响允许的更改。

在 MySQL 中设置时区

发布时间:2024/03/26 浏览次数:93 分类:MySQL

在本教程中,我们将学习如何在 MySQL 服务器中更改时区。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便