【问题标题】:how can I add a new column which counts the number of rows as serial number如何添加一个将行数计为序列号的新列
【发布时间】:2011-07-18 02:55:11
【问题描述】:
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


    【解决方案1】:

    在表myTable 中添加一个新列mySerial 并将每一行递增1(从“1”开始):

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

    【讨论】:

    • 它与接受和赞成的答案有何不同?它增加了什么?
    • @Yaroslav 接受的答案只会将计数器添加到选择中。这一张改变了原来的桌子。我无法通过更新从接受的答案中得出结论。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 如果你理解了OP的问题,你能给我解释一下吗?我真的很困惑^_^
      • @Starx : 只关注最后一句 start from 1 and increment by 1 for each row. 此列仅包含记录的顺序编号。至少我是这么读的
      【解决方案4】:

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

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

      【讨论】:

      • 正是我从不同的表中选择的,而表中没有添加行的列
      • 我很抱歉@sadi,但你指的是thisthis column,我完全不明白column which add rows的部分
      • @starx 新列,计算我选择的行数或记录数 s.no 1 2 3
      • @sadi,你的意思是创建一个列,它创建一个列来保存SN
      • @starx 正是我想要这个在 mysql 中
      【解决方案5】:

      那么,您想为每一行添加一列,其中包含行数吗?不可能自动执行此操作,但您可以添加一列并在每次插入时更新它 (UPDATE table SET (rowcount = SELECT COUNT(*) FROM TABLE)) 但我想知道您为什么要这样做?在我看来,您想解决一些问题,我认为必须有比添加行数列更好的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-09
        • 2022-08-19
        • 1970-01-01
        • 2011-05-28
        • 2016-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多