如何复制和自动增加 sql 中的列?

How to duplicate and auto increment columns in sql?

我已经很久没有写代码了,所以请认为我是一个真正的基本用户。

我正在实施 vtiger 并尝试通过直接使用数据库来简化它。

这是我的问题:

在我的 table vtiger_paiements 中,我有 2 列:paiements_tks_s1 和 paiements_tks_s1typepaiement。

我想复制这 2 列并将重复项自动递增到 s53(一个接一个,这意味着 paiements_tks_sntypepaiement 始终在 paiements_tks_sn 之后)。

我完全不知道该怎么做。

我真的不想在 vtiger 中创建 53x2 标签...

谢谢你的帮助

PS :一般。假设我有一个名为 payment1 的列。我想将此列复制 N 次并命名为 payment2、payment3、payment4...paymentN。

好吧,让我们假设你有一个 table 当前结构类似于:

payments
    > id int(11) PRIMARY KEY AUTO_INCREMENT
    > user_id int(11)
    > payment1 int(11)
    > paymentType1 int(11)

你要做的是创建额外的列,这样你就有了最后两列的 53 对...

    > payment2 int(11)
    > paymentType2 int(11)
    > payment3 int(11)
    > paymentType3 int(11)
    ...
    > payment53 int(11)
    > paymentType53 int(11)

然后您只需要使用 ALTER TABLE 查询来添加列。

您可以生成如下查询:

$tableName      = "payments";
$startingNumber = 2;
$endingNumber   = 53;

echo "ALTER TABLE {$tableName}\n";
for ($i = $startingNumber; $i < $endingNumber+1; $i++) {
    echo "    ADD COLUMN payment{$i} int(11),\n";
    echo "    ADD COLUMN paymentType{$i} int(11)" . ($endingNumber === $i ? ";": ",\n");
}

您可以将 echo 更改为一个变量,然后在 for 循环或 copy/paste 生成的查询后 PHP 中连接并 运行 它 PHP我的管理员。

运行 在 PPH

$tableName      = "payments";
$startingNumber = 2;
$endingNumber   = 53;

$sql = "ALTER TABLE {$tableName}\n";
for ($i = $startingNumber; $i < $endingNumber+1; $i++) {
    $sql .= "    ADD COLUMN payment{$i} int(11),\n";
    $sql .= "    ADD COLUMN paymentType{$i} int(11)" . ($endingNumber === $i ? ";": ",\n");
}

// Assuming that you have an active connection to the db
// and $mysqli is the mysqli object
$mysqli->query($sql);

但是,我建议您考虑一下您的数据库设计。在我看来,您可以简单地使用 table,例如:

payment
    > id
    > user_id
    > number   -- If you want to number them specifically
    > amount
    > type

拥有 50 多个列似乎开销很大...