我正在使用MySQL 5.0。
我的表格包含以下结构和数据。
CREATE TABLE `test`
(
`text1` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `test` (`text1`)
VALUES ('ABC'), ('PQR'), ('XYZ'), ('LMN');
我想显示以下输出:
Index Text
1 ABC
2 LMN
3 PQR
4 XYZ
在表结构中,我不想创建任何新列。
如何编写SQL查询或存储过程来完成此任务?
提前致谢。
答案 0 :(得分:1)
这不会回答你的问题,但你应该重新考虑你的要求。
没有索引。您可以为应用程序代码中的每一行打印一个数字,但该数字将毫无意义。如果表中没有实际索引字段,则无法确定每个数字的含义。例如,如果两个用户同时删除行“2”,则可以删除LMN和PQR。这是出乎意料和危险的。
如果您缺少ORDER BY子句,则每次执行查询时也不能保证以相同的顺序获取行。
答案 1 :(得分:0)
select @rownum:=@rownum+1 Id, text1
from test, (SELECT @rownum:=0) r
order by text
答案 2 :(得分:0)
SET @row=0;
SELECT @row := @row + 1 AS Index, text1 as Text FROM test;