我正在 cassandra 2.1 ,并且在这里可能有一个新手问题。
我使用较新的时间戳(日期列)覆盖现有行。
QueryBuilder.insertInto(...)
session.execute(statement);
then do
String sql = "SELECT * FROM "+keyspace+"."+tablename;
ResultSet resultSet = session.execute(sql);
我返回了两行。一个是insertInto语句之前的语句,另一个是insertInto语句更新的新值。
我如何只获得一行? cqlsh
只显示一行。
答案 0 :(得分:0)
您可能已将表定义为使用Date列作为群集列。这用于收集时间序列数据,因此插入具有不同时间戳的行会创建新行而不是更新现有行。
如果要更新(覆盖)现有行,则为PRIMARY KEY列出的所有字段必须具有相同的值。
此外,如果您正在使用UPDATE语句,请注意UPDATE和INSERT在Cassandra中执行相同的操作,因此如果键值与现有行完全匹配,则使用UPDATE就像INSERT一样。