删除 sqlite 中带有数字的行数 < 1 的行
Delete rows in sqlite where number of rows with a number are < 1
目前我有代码通过我的 sqlite 数据库并获取数字等于 1 的行数。如果是这种情况,我删除具有该数字的行。它工作得很好,但我想知道我是否可以在 sqlite 中做同样的事情,而不是做所有这些循环和 badtadase 的持续挂钩。
这是我目前拥有的代码
public void deleteSession(){
ArrayList<long> numbers = getScannedNumbers();
for(int i=0; i<numbers.size(); i++){
int count = getRowCount(numbers.get(i).number);
if(count == 1){
//delete that row
}
}
}
getScannedNumbers
returns 来自数据库的数字列表(基本上是标识符),其中名为 scan_count
的列 > 0
getRowCount
returns 以数字作为标识符的行数
这可以作为单个 sql 删除语句来完成,还是我正在做的所有循环将成为我的解决方案?
像这样的东西应该适合你。
DELETE FROM mytab
WHERE myid IN
(
SELECT myid
FROM mytab
GROUP BY myid
HAVING count(*) > 1
)
目前我有代码通过我的 sqlite 数据库并获取数字等于 1 的行数。如果是这种情况,我删除具有该数字的行。它工作得很好,但我想知道我是否可以在 sqlite 中做同样的事情,而不是做所有这些循环和 badtadase 的持续挂钩。
这是我目前拥有的代码
public void deleteSession(){
ArrayList<long> numbers = getScannedNumbers();
for(int i=0; i<numbers.size(); i++){
int count = getRowCount(numbers.get(i).number);
if(count == 1){
//delete that row
}
}
}
getScannedNumbers
returns 来自数据库的数字列表(基本上是标识符),其中名为 scan_count
的列 > 0
getRowCount
returns 以数字作为标识符的行数
这可以作为单个 sql 删除语句来完成,还是我正在做的所有循环将成为我的解决方案?
像这样的东西应该适合你。
DELETE FROM mytab
WHERE myid IN
(
SELECT myid
FROM mytab
GROUP BY myid
HAVING count(*) > 1
)