从 MySQL 表中选择第一行
今天,我们将探讨三种场景及其解决方案,我们希望从 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)
在这里,了解 LIMIT
和 ORDER 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。
请参见下图。
记住,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)
此示例使用不同的函数和子句来获得所需的结果。
- IN() - 此函数允许我们在 WHERE 子句中指定多个值。 如果表达式等于任何 IN() 列表值,它返回 1。
-
GROUP BY - 它对包含相同值的记录进行分组,主要用于聚合函数,例如
MIN()
、MAX()
、COUNT()
等。 - MIN() - 它返回查询中属性(列)的最小值。
- 子查询 - 它嵌套在另一个查询中,例如 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)
相关文章
如何在 MySQL 中声明和使用变量
发布时间:2024/03/26 浏览次数:115 分类:MySQL
-
当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。
在 MySQL 中使用 Mysqladmin 刷新主机解除阻塞
发布时间:2024/03/26 浏览次数:82 分类:MySQL
-
你将了解阻止主机的原因。此外,通过使用 phpMyAdmin 和命令提示符刷新主机缓存来解除阻塞的不同方法和效果。