2015-12-03 2 views
2

Я хочу создать хранимую процедуру в MySQL, которая отображает данные таблицы с номером строки, а не идентификатором строки. Как это:Добавление нового столбца для нумерации в процедуре MySQL

enter image description here

И я попробовал этот код:

CREATE DEFINER=`root`@`localhost` PROCEDURE `count_row`() 
BEGIN 
declare row_num INTEGER; 
declare result INTEGER; 
SELECT count(id) FROM engineers INTO row_num; 
SET result=0; 
WHILE(result<=row_num) 
DO 
SELECT result=result+1, name, date FROM engineers ; 
END WHILE; 
END 

Результат создавал неопределенное количество вкладок в MySQL. Тогда я попробовал этот код:

CREATE DEFINER=`root`@`localhost` PROCEDURE `count_row`() 
BEGIN 
declare row_num INTEGER; 
declare result INTEGER; 
SELECT count(id) FROM engineers INTO row_num; 
SET result=1; 
WHILE(result<=row_num) 
DO 
SELECT result, name, date FROM engineers; 
SET result = result +1; 
END WHILE; 
END 

И я получил 5 вкладок (равное общему количеству строк), как это:

enter image description here

вторую вкладку:

enter image description here

Я хочу показать только одну вкладку с одной таблицей, как показано на первой картинке вопроса.

+1

Для простоты, вы можете использовать PHP или любой другой язык, чтобы показать столбец нумерации – am90

ответ

1

Попробуйте

SELECT @row_number:[email protected]_number+1 as RowNum, name as Engineer, date 
FROM engineers, (SELECT @row_number:=0) as t 
order by name; 

или

SET @row_number:=0; 
SELECT @row_number:[email protected]_number+1 as RowNum, name as Engineer, date 
FROM engineers 
order by name; 
+0

@ сделать разницу? Я попробую это – droidnation

+0

вам тоже не понадобится петля. Просто один оператор select. –

+0

Ваш код отлично работает – droidnation

Смежные вопросы