【问题标题】:Javascript SQLite: SELECT statement with WHERE IN clause [closed]Javascript SQLite:带有 WHERE IN 子句的 SELECT 语句 [关闭]
【发布时间】:2016-03-25 13:52:08
【问题描述】:

JavascriptSQLite 中,有没有更好的方法可以执行带有WHERE IN 子句的SELECT 语句?我们以下面的查询为例:

var ids = [1, 5, 10];

function getBranches (ids) {
    db.transaction(function(tx) {

        tx.executeSql('SELECT * FROM Branch WHERE id in ?', [ids], function(tx,results){

            // process results
        });

    });
}

我知道我们总是可以以SQL 识别它的方式为 id 格式化 WHERE IN 子句,如下所示。但我想知道是否有一个很好的方法来满足这个要求。

function getBranches (ids) {
        db.transaction(function(tx) {

            var idClause = ' id in (\"' + ids.join("\",\"") + '\");';

            tx.executeSql('SELECT * FROM Branch WHERE ' + idClause, [], function(tx,results){

                // process results
            });

        });
    }

【问题讨论】:

    标签: javascript sql sqlite


    【解决方案1】:

    解决方案 1:

    一种方法是不使用占位符?

    'SELECT * FROM test WHERE col1 in (' + ids.join(',') + ')', [],...
    

    解决方案 2:

    另一种方法是按照您的示例执行花哨的准备好的语句样式,您需要在其中输入等于参数数量的 ? 的确切数量。

    var ids = [1, 5, 10];
    
    var placeHolders = new Array(ids.length).fill('?').join(',');
    
    var query = 'SELECT * FROM Branch WHERE id in ('+ placeHolders + ')';
    
    tx.executeSql(query, [ids], ...
    

    【讨论】:

      猜你喜欢
      • 2018-03-08
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多