只从一个表上传新行到另一个表

时间:2016-07-04 11:03:37

标签: php html

您好我知道如何将数据从一个表上传到另一个表:

let sampleData = [{id: 1, name: 'John Doe', gender: 'Male'},
    {id: 2, name: 'Jane Doe', gender: 'Female'},
    {id: 3, name: 'Mary Jane', gender: 'Female'},
    {id: 4, name: 'Mary Poppins', gender: 'Female'}];

$scope.tableParams = new NgTableParams({

}, {
    dataset: sampleData
});

$scope.checkboxes = {
    checked: false,
    items: {}
};

$scope.$watch(() => {
    return $scope.checkboxes.checked;
}, (value) => {
    sampleData.map((item) => {
        $scope.checkboxes.items.id = value;
    });
});

$scope.$watch(() => {
    return $scope.checkboxes.items;
}, () => {
    let checked = 0;
    let unchecked = 0;
    let total = sampleData.length;

    sampleData.map((item) => {
        if ($scope.checkboxes.items.id) {
            checked++;
        } else {
            unchecked++;
        }
    });

    if (unchecked === 0 || checked === 0) {
        $scope.checkboxes.checked = checked === total;
    }

    angular.element($element[0].getElementsByClassName('select-all')).prop('indeterminate', (checked != 0 && unchecked != 0));
});

但是我有一个问题,如果你认为我的初始表中有10行通过这段代码我可以将它们全部上传到新表中然后例如10小时后如果我有10个新行并且我使用这个我的新表中的代码我将有30行。因为此代码没有删除10个旧行,并且还会再次添加所有20行。我怎么办才能不再上传前10行呢?

3 个答案:

答案 0 :(得分:0)

在数据库中设置标志变量。默认情况下,将值设置为0.如果上载的数据将该值设置为1.当您将一个表上载到另一个表时,请检查标志值。仅上传那些为0的值。

答案 1 :(得分:0)

是否定义了主键?或者,如果您可以在表上设置时间戳字段/系统更改编号,则可以在第一次插入后在单独的表中捕获scn /时间戳,并通过将时间戳与保留的时间戳进行比较来从基表中获取记录。 / p>

答案 2 :(得分:0)

嘿,你可以使用这个query。这将insertrow <{1}}中不存在的table

  INSERT INTO new_table(id, pricerange, rentrange, date) SELECT id, price, rent, date  FROM initial_table WHERE NOT EXISTS(SELECT * FROM new_table WHERE (initial_table.id=new_table.id))  

如果需要,您可以在condition语句中添加更多if