Как я могу добавить новый столбец, который подсчитывает количество строк в качестве серийного номера

record of
id  fare    commission  routecode   vehicle number  productcode date    time    driver  owner name
15  12345   123 4533    1   3344    2011-03-18  00:00:00    yasir   saleem
20  a   a   3433    1   2333    2011-03-25  00:00:00    yasir   saleem
36  11111   11111   3433    1   2333    2011-03-25  16:13:12    yasir   saleem
9   1233    123 3433    nk-234  2333    2011-03-24  00:00:00    siddiq  aslam
21  1200    120 4533    nk-234  7655    2011-03-24  00:00:00    siddiq  aslam
22  1200    133333  0987    nk-234  2333    2011-03-11  00:00:00    siddiq  aslam
23  10000   11  4533    nk-234  7655    2011-03-19  00:00:00    siddiq  aslam
25  122 12  0987    nk-234  2333    2011-03-11  00:00:00    siddiq  aslam
26  1000    100 3344    nk-234  7655    2011-03-11  00:00:00    siddiq  aslam
27  1000    100 3344    nk-234  2333    2011-03-10  00:00:00    siddiq  aslam
34  100 10  3344    nk-234  2333    2011-03-18  00:00:00    siddiq  aslam
35  100 10  3344    nk-234  2333    2011-03-02  00:00:00    siddiq  aslam
5   1000    100 1234    wq1233  3344    2011-03-10  22:30:00    waqas   sami
6   2222    22  1234    wq1233  3344    2011-03-17  22:30:00    waqas   sami
24  a   a   4533    PSS-1234    7655    2011-03-02  00:00:00    salman  salam
42633   145175                          

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

строки. Он должен начинаться с 1 и увеличиваться на 1 для каждой строки.

Ответ 1

Если вы имеете в виду оператор SELECT:

Скажите, что ваш выбор был

select * from tbl

Он становится

select @n := @n + 1 RowNumber, t.*
from (select @n:=0) initvars, tbl t

Примечания:

  • select @n:=0 используется для reset глобальной переменной в 0
  • @n := @n + 1 увеличивает его на 1 для каждой строки, начиная с 1. Этот столбец называется "RowNumber"

Ответ 2

Добавьте новый столбец mySerial в таблицу myTable и увеличивайте каждую строку на 1 (начиная с '1'):

ALTER TABLE myTable ADD mySerial int(11) DEFAULT '0' NOT NULL;
SELECT @n:=0;
UPDATE myTable SET mySerial = @n := @n + 1;

Ответ 3

Итак, вы хотите добавить столбец в каждую строку с номером строки в нем? Это невозможно сделать автоматически, но вы можете добавить столбец и обновить его на каждой вставке (UPDATE table SET (rowcount = SELECT COUNT(*) FROM TABLE)), но мне интересно, почему вы хотите это сделать? Мне кажется, вы хотите что-то изменить, и я думаю, что должно быть лучшее решение, чем добавление столбца строки.

Ответ 4

Я не уверен, полностью ли я понимаю ваш вопрос, но для добавления столбца infront id запускает этот запрос

ALTER TABLE `yourtablename` ADD `yournewfield` VARCHAR( 50 ) NOT NULL BEFORE `id`