我怎样才能添加一个新列来计算行数作为序列号

问题描述 投票:0回答:6
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。

mysql phpmyadmin
6个回答
27
投票

如果你的意思是在 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”

11
投票

向表

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
投票

所以,您想在每一行中添加一列,其中包含行数?不可能自动执行此操作,但您可以添加一列并在每次插入时更新它 (

UPDATE table SET (rowcount = SELECT COUNT(*) FROM TABLE)
),但我想知道您为什么要这样做?在我看来,您想解决一些问题,我认为必须有比添加行数列更好的解决方案。


0
投票

我不确定我是否完全理解你的问题,但是要在 id 前面添加一列运行这个查询

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

0
投票

您可能想看看这篇博文:http://jimlife.wordpress.com/2008/09/09/displaying-row-number-rownum-in-mysql/

似乎有一种在查询结果中添加行号的解决方案,这可能会解决您的问题。


0
投票
  1. 为行分配序号

以下语句使用 ROW_NUMBER() 函数为产品表中的每一行分配一个序列号:

链接在这里试试这个:row_number

row_number() over(order by column_name)

例子: 选择 ROW_NUMBER() 超过( 按产品名称订购 )行号, 产品名称, 厂商建议零售价 从 产品 订购方式 产品名称;

© www.soinside.com 2019 - 2024. All rights reserved.