如何在WHERE子句中通过IN运算符使用值列表?

Z的Jesse W-放弃了SE

我正在尝试使用JavaScript驱动程序执行这样的查询:

client.execute('SELECT * FROM zhos_dev.jw_testing WHERE a IN ?', [['foo', 'foo1']], {prepare: true})

它给了我:ResponseError: line 0:-1 mismatched input '<EOF>' expecting ')'

我的版本是: [cqlsh 3.1.8 | Cassandra 1.2.19 | CQL spec 3.0.5 | Thrift protocol 19.36.2]

该表已创建并使用以下CQL填充:

CREATE TABLE zhos_dev.jw_testing (a text PRIMARY KEY, b text);
INSERT INTO zhos_dev.jw_testing (a, b) VALUES ('foo', 'bar');
INSERT INTO zhos_dev.jw_testing (a, b) VALUES ('foo1', 'bar1');
INSERT INTO zhos_dev.jw_testing (a, b) VALUES ('foo2', 'bar2');
瓦莱丽·帕拉姆-汤普森

我在同一版本中复制了此内容:[cqlsh 3.1.8 | 卡桑德拉1.2.19 | CQL规范3.0.5 | 节俭协议19.36.2]

  name: 'ResponseError',
  info: 'Represents an error message from the server',
  message: "line 0:-1 mismatched input '<EOF>' expecting ')'",
  code: 8192,
  query: 'SELECT name, color FROM keyspace1.dresses WHERE id IN ?'

“ IN”子句早在Cassandra 2.1之前就可以正常工作:[cqlsh 5.0.1 | 卡桑德拉2.1.21 | CQL规范3.2.1 | 本机协议v3]

Connected to cluster with 1 host(s): ["127.0.0.1:9042"]
Azul Dress

测试表/数据:

CREATE KEYSPACE keyspace1 WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 1 };

CREATE TABLE keyspace1.dresses (id text, color text, name text, size int, PRIMARY KEY (id, color));

insert into dresses (id, color, name, size) values ('mon1', 'blue', 'Blue Dress', 12);
insert into dresses (id, color, name, size) values ('mon2', 'blue', 'Azul Dress', 12);
insert into dresses (id, color, name, size) values ('can1', 'green', 'Green Dress', 12);
insert into dresses (id, color, name, size) values ('can2', 'verde', 'Verde Dress', 12);

和代码:

const cassandra = require('cassandra-driver');

const client = new cassandra.Client({ contactPoints: ['127.0.0.1'], localDataCenter: 'datacenter1' });
client.connect(function (err) {
  if (err) return console.error(err);
  console.log('Connected to cluster with %d host(s): %j', client.hosts.length, client.hosts.keys());
});

client.execute('SELECT name, color FROM keyspace1.dresses WHERE id IN ?', [ ['mon2'] ], 
    { prepare: true}, 
    function (err, result) {
          if (err) return console.error(err);
          const row = result.first();
          console.log(row['name']);
});

由于仅在Cassandra 2.1及更高版本中才支持node.js驱动程序(https://docs.datastax.com/en/developer/nodejs-driver/4.1/faq/#which-versions-of-cassandra-does-the- driver-support),我认为Cassandra或驱动程序项目不会提出bug请求。至少可以升级到2.1吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 SQL 的 WHERE 子句中使用 IN 运算符和 AND 运算符...?

如何在保护子句中使用“ in”运算符?

如何在 azure-mobile-apps-js-client 的 WHERE 子句中使用 IN 运算符

如何在带有可选include的where子句中使用运算符?

使用Like运算符的Where子句中的CASE语句

在 where 子句中使用多个 AND 运算符

SQL:我可以将“<”运算符的字符串值转换为 where 子句中的运算符吗?

where子句中所有运算符的列表在哪里?

如何在Android Sqlite中的where子句的更新操作中使用AND运算符?

如何在LINQ WHERE语句中使用OR运算符

如何将 SQL 查询转换为 PHP 并在 WHERE 子句中使用 AND 运算符

如果则运算符在sql语句的where子句中

SQL:了解WHERE子句中的OR运算符

Haskell类型映射(->运算符)在where子句中?

替换 mysql where 子句中的逻辑运算符

如何在基于组合返回值的switch语句中使用&&运算符?

如何在nginx的“ if”语句中使用“或”运算符?

在 WHERE 子句中使用“IN”运算符以某种方式颠倒子查询的顺序

Cloud Functions 中使用的 Firestore where 子句中是否有“!=”运算符?

MySQL:除了WHERE子句中的逻辑运算符外,AND / OR / XOR可以在哪里使用?

在SQL Server 2008 R2的where子句中使用比较运算符

如何在WHERE子句的LIKE运算符中使用撇号?示例-WHERE WORD,例如'%That's Why%'

“SQL 问题:如何在表中存储多个通配符字符串并将它们传递给 where 子句中的 LIKE 运算符”

在yii2中的查询构建器中如何在带有where子句的运算符中使用

如何在Laravel中将两个where子句与like运算符一起使用

Swift子句中的NOT运算符问题

如何在interable where上使用OR运算符?

基于列值的WHERE子句运算符

WHERE子句后无效使用GROUP BY运算符