gpt4 book ai didi

mysql - 表中单行的SELECT索引

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:15 27 4
gpt4 key购买 nike

我有一个存储团队的 MYSQL 表。

表结构:
CREATE TABLE 团队(
id int(11) NOT NULL AUTO_INCREMENT,
名称 varchar(28) 整理 utf8_unicode_ci NOT NULL,
唯一键 id (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;

示例数据:
INSERT INTO团队VALUES
(1, '一'),
(2, '二'),
(3, '三'),
(4, '四'),
(5, '五');

使用:
SELECT id, name, id as rowNumber FROM teams WHERE id = 4
返回正确的 rowNumber,因为在表中它前面确实有三行。但这仅在我不删除行时有效。

示例:
假设我DELETE FROM teams WHERE id = 3;
当我现在使用 SELECT id, name, id as rowNumber FROM teams WHERE id = 4 时,结果是错误的,因为现在表中它前面只有两行(id 的 1 和 2)。

如何从一个特定行中获取按 id 排序的“真实”行号/索引?

最佳答案

您正在将 ID 转换为 rowNumber,因此它只是返回 ID 列值。为什么您认为它会有所不同?

我认为您可能想要定义和 @curRow 变量来获取行号并使用如下子查询:

 SELECT * from 
(SELECT ID,
NAME,
@curRow := @curRow + 1 AS rowNumber
FROM Teams t
JOIN (SELECT @curRow := 0) curr
ORDER by t.ID asc) as ordered_team
WHERE ordered_team.id = 4;

关于mysql - 表中单行的SELECT索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12989688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com