Как я могу добавить новый столбец, который считает количество строк в качестве серийного номера - PullRequest
15 голосов
/ 18 марта 2011
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                          

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

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

Ответы [ 5 ]

23 голосов
/ 18 марта 2011

Если вы имеете в виду в выражении SELECT:

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

select * from tbl

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

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

Примечания:

  1. select @n:=0 используется для сброса глобальной переменной на 0
  2. @n := @n + 1 увеличивает ее на 1 для каждой строки, начиная с 1. Этот столбец называется «RowNumber»
10 голосов
/ 11 июля 2012

Добавить новый столбец 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;
0 голосов
/ 18 марта 2011

Возможно, вы захотите заглянуть в этот пост: http://jimlife.wordpress.com/2008/09/09/displaying-row-number-rownum-in-mysql/

Кажется, есть решение для добавления номера строки к результату запроса, что может решить вашу проблему.

0 голосов
/ 18 марта 2011

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

ALTER TABLE `yourtablename` ADD `yournewfield` VARCHAR( 50 ) NOT NULL BEFORE `id` 
0 голосов
/ 18 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...