迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > 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 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用 Mysqldump 备份 MySQL 中的数据

发布时间:2023/05/09 浏览次数:192 分类:MySQL

本篇文章将介绍如何使用 mysqldump 只备份数据。 在这里,我们将探讨 --no-create-info 、--compact 、--skip-triggers 和 --no-create-db 选项。

更新 MySQL 表中的主键

发布时间:2023/05/09 浏览次数:61 分类:MySQL

本篇文章介绍如何更新 MySQL 表中的主键。 我们将使用 ALTER 命令对主键进行任何更改。更新 MySQL 表中的主键 我们可以在多种情况下更新 MySQL 表中的主键。

在 MySQL 中获取命令历史记录

发布时间:2023/05/09 浏览次数:150 分类:MySQL

本文重点介绍了在 Windows 和 Linux 中获取我们已执行的 MySQL 命令历史记录的各种方法。MySQL命令历史

Oracle 的 decode 函数在 MySQL 中的等价物

发布时间:2023/05/09 浏览次数:115 分类:MySQL

本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。

在 Linux 中安装 MySQL 客户端

发布时间:2023/05/09 浏览次数:72 分类:MySQL

在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。

在 MySQL 中转换为十进制

发布时间:2023/05/09 浏览次数:150 分类:MySQL

有时,我们可能需要将一种数据类型转换为另一种数据类型。 下面是我们如何使用带有 DECIMAL(M,D) 的 CAST() 和 CONVERT() 函数在 MySQL 中转换为十进制。

在 MySQL 中获取当前日期和时间

发布时间:2023/05/09 浏览次数:145 分类:MySQL

本篇文章我们将学习 NOW()、CURRENT_TIMESTAMP()(也写为 CURRENT_TIMESTAMP)和 SYSDATE() 来获取 MySQL 中的当前日期和时间。 我们还将看到这三个功能之间的比较。在 MySQL 中获取当前日期和时间

更改 MySQL 服务器中的 max_allowed_packet Size

发布时间:2023/05/09 浏览次数:142 分类:MySQL

本篇文章介绍如何更改 MySQL 服务器中的 max_allowed_packet 大小。 为了了解这一点,我们将使用两个操作系统,Windows 10 和 Linux (Ubuntu)。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便