您好我知道如何将数据从一个表上传到另一个表:
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行呢?
答案 0 :(得分:0)
在数据库中设置标志变量。默认情况下,将值设置为0.如果上载的数据将该值设置为1.当您将一个表上载到另一个表时,请检查标志值。仅上传那些为0的值。
答案 1 :(得分:0)
是否定义了主键?或者,如果您可以在表上设置时间戳字段/系统更改编号,则可以在第一次插入后在单独的表中捕获scn /时间戳,并通过将时间戳与保留的时间戳进行比较来从基表中获取记录。 / p>
答案 2 :(得分:0)
嘿,你可以使用这个query
。这将insert
仅row
<{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