0

我正在尝试制作一个可以帮助我更新数据库的 Java 程序。

我有这个代码

for(int i = 1; i < 3095; i++)
    if((i-1)%13==0)
         System.out.println();
     System.out.println("INSERT INTO categories ('"+i+"' , '"+(i+13)+'");

基本上我需要找到一种方法来记录每组13的第一个数字并将其放入System.out.println命令中。我怎样才能让原件i+13工作?

我正在寻找完成的程序来输出如下内容:

INSERT INTO categories (categories_id, parent_id) VALUES ('1', '1')
INSERT INTO categories (categories_id, parent_id) VALUES ('2', '1')
INSERT INTO categories (categories_id, parent_id) VALUES ('3', '1')....


INSERT INTO categories (categories_id, parent_id) VALUES ('14', '14')
INSERT INTO categories (categories_id, parent_id) VALUES ('15', '14')
INSERT INTO categories (categories_id, parent_id) VALUES ('16', '14')....etc
4

4 回答 4

2

这是您的代码来做您想做的事情,并带有一些更合适的花括号:

    for (int i = 1; i < 3095; i++) {
        if ((i-1) % 13 == 0) {
            System.out.println();
        }
        System.out.println("INSERT INTO categories (categories_id, parent_id) " +
                           "VALUES ('" + i + "' , '" + (i - ((i-1) % 13)) + "')");
    }
于 2013-06-04T12:15:23.467 回答
1

假设 i是 a int,由于截断整数除法,i/13*13 + 1对于 = 0, 1, 3, .., 12 将是 1 i,然后对于 i = 13, 14, 15, ..., 25 跳到 14,然后跳到 27, ...

如果您想要 1 代表 1、2、3、..13 的内容,然后在 14 上跳到 14,请使用(i-1)/13*13 + 1.

于 2013-06-04T12:12:38.737 回答
0

根据我对您想要做什么的理解 - >您可以执行以下操作:

int i, j;
    for(i = 1; i < 3095; i+=13) {
        for(j=i; j<i+13; j++)
            System.out.println("INSERT INTO categories ('" + j + "' , '" + i + "\')");
        System.out.println();
        }
    }

输出是这样的:

INSERT INTO categories ('1' , '1') .... INSERT INTO categories ('13' , '1')
INSERT INTO categories ('14' , '14') ... INSERT INTO categories ('26' , '14') 
INSERT INTO categories ('27' , '27') ... INSERT INTO categories ('39' , '27')

等等...

于 2013-06-04T12:27:55.027 回答
0

不确定,但想到了

SET @num = 0;
INSERT INTO categories (categories_id, parent_id)
    SELECT @num := @num + 1, (@num DIV 13) * 13 + 1
    WHERE @num < 3095;

也许FROM DUAL

于 2013-06-04T12:28:31.270 回答