0

作为对数千行进行深入文本搜索的一部分,其中许多行在 A 列中包含相同的数据,我想知道 A 列的 sqlite 结果集中的所有行何时都相同。例如。如果搜索词是 'ai' 并且列 A = 'in pain' 的结果集中的所有行都执行此功能。

那么我如何以编程方式,无论是在 sqlite 中还是在结果集上使用 javascript 询问:A 列中的所有行是否都相同?

这可能很简单(希望如此),但它今天不会来找我......

谢谢!

4

3 回答 3

0
SELECT columnA, count(*) 
FROM  MyTable 
WHERE myField like '%AI%'  
GROUP BY columnA

可能不会是最快的,因为它在两边都做了一个 % ......这是一篇SQLLite 文章

您可以在字段上使用正则表达式搜索 AI,这可能会更快

已更新,但我仍然不认为我完全理解问题示例数据会有所帮助.. 所以

COLUMNA in pain in pain in the 巢穴

你想要看

in pain      2
in the lair  2

还是您想查看 no records found(因为列 A 中包含 ai 的所有值都不匹配?)

---也许这就是你所追求的......

select count(*) mcount from (
    SELECT columnA, count(*) 
    FROM  MyTable 
    WHERE columnA like '%AI%'  
    GROUP BY columnA) innerResult

如果 mcount > 1,则 columnA 有超过 1 个匹配 '%AI%' 的值

于 2012-04-17T01:31:55.553 回答
0

这在 SQL 中会很昂贵:

 SELECT ColumnA, (SELECT COUNT(*) FROM YourTable WHERE ColumnA LIKE '%ai%' AND ColumnA <> outer.ColumnA) AS OtherCount
   FROM YourTable AS outer WHERE ColumnA LIKE '%ai%';

在 javascript 中,您只需遍历维护 A 列值字典的行,当字典中有两个键时,您知道并非所有结果都相同。

于 2012-04-17T18:39:04.433 回答
0

在db调用的成功函数中使用Javascript:

var detailsarr=[];
if (results.rows && results.rows.length) {
for (var i = 0; i < results.rows.length; i++) {
var details=results.rows.item(i).details;
if(detailsarr.toString().indexOf(details)===-1){detailsarr.push('"'+details+'"');}
    }
detailsarr = '['+detailsarr+']';
var detailsdata=JSON.parse(detailsarr);
if(detailsdata[1]){THEN ALL ROWS ARE NOT IDENTICAL}
}
于 2012-08-10T19:41:02.743 回答