2016-09-30 4 views
0

Ich bin neu in dieser Cassandra-Datenbank mit Nodejs.Cassandra + Holen Sie sich die letzten Datensätze mit Abfrage

Ich habe user_activity-Tabelle. In dieser Tabelle werden Daten basierend auf Benutzeraktivität eingefügt.

Auch ich habe einige Benutzerliste. Ich muss die Daten in diesem bestimmten Benutzer und letzten Datensatz abrufen.

Ich bin nicht daran interessiert, die Abfrage in for-Schleife zu setzen. Haben Sie eine andere Idee, um dies zu erreichen?

Beispielcode:

var userlist = ["12", "34", "56"]; 
var query = 'SELECT * FROM user_activity WHERE userid IN ?'; 
server.user.execute(query, [userlist], { 
    prepare : true 
}, function(err, result) { 
    console.log(results); 
}); 

Wie die Benutzerlisten für letzte bekommen?

Beispiel:

user id = 12 - need to get last record; 
user id = 34 - need to get last record; 
user id = 56 - need to get last record; 

Ich brauche diese drei Datensätze zu erhalten. Tabellenschema:

CREATE TABLE test.user_activity (
    userid text, 
    ts timestamp, 
    clientid text, 
    clientip text, 
    status text, 
    PRIMARY KEY (userid, ts) 
) 
+0

Hallo, können Sie einige Schemabeschreibung zur Verfügung stellen? –

+0

Sie möchten nur die letzten Benutzerdetails abrufen? – abdulbarik

+0

aktualisierten Tabellenschema @GuillaumeS – RSKMR

Antwort

2

Es ist nicht möglich, wenn Sie die IN Filter verwenden.

Wenn es sich um einen einzelnen user_id-Filter handelt, können Sie die Reihenfolge anwenden. Natürlich benötigen Sie eine Spalte für eingefügte/aktualisierte Zeit. So wird Abfrage wie folgt sein:

SELECT * FROM user_activity WHERE user_id = 12 ORDER BY updated_at LIMIT 1; 
+0

Es ist kein einziges. müssen die letzten Datensätze mehrerer Benutzer erhalten. – RSKMR

+0

dann ist es in Abfrage nicht möglich. Sie müssen etwas in Code-Ebene behandeln –

+0

Es ist möglich, die Daten mit executeBatch abzurufen? (Ich meine mehrere Auswahl Abfrage im Batch) – RSKMR

1

Sie N Wert setzen können Anzahl der Datensätze zu erhalten

SELECT * FROM user_activity WHERE userid IN ? ORDER BY id DESC LIMIT N 
+0

Ich erwarte Ergebnisse, die letzten Datensätze jedes Benutzers erhalten. – RSKMR

+0

meine Abfrage tut, um 3 Datensätze in Ihrem Fall zu bekommen, wenn Sie es '3' und das wird die letzten drei Datensätze des Benutzers, die Sie erwähnt haben. – abdulbarik

+0

Nein. Entschuldigung, wenn mein Inhalt klar ist. Meine Frage ist, diese 3 Benutzer (jeder und alle) Ergebnisse der letzten Datensätze zu erhalten – RSKMR

Verwandte Themen