Я использую 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-запрос или хранимую процедуру для этого?
Спасибо заранее.
SET @row=0;
SELECT @row := @row + 1 AS Index, text1 as Text FROM test;
Это не ответит на ваш вопрос, но вы должны действительно пересмотреть то, о чем вы просите.
Нет индекса. Вы можете напечатать номер для каждой строки в коде приложения, но это число будет бессмысленным. Без фактического поля индекса в вашей таблице вы не можете быть уверены, что означает каждый номер. Например, если два пользователя одновременно удаляют строку "2", оба LMN и PQR могут быть удалены. Это неожиданно и опасно.
Вам также не гарантируется получение строк в том же порядке каждый раз, когда вы выполняете запрос, если у вас нет предложения ORDER BY.
select @rownum:=@rownum+1 Id, text1
from test, (SELECT @rownum:=0) r
order by text