ich den besten Weg zu finden, ich versuche, eine bedingte Abfrage auf einer Tabelle auszuführen, die wie folgt aussehen wird:Conditional select mit MYSQL, Performance-Problem
primaryKey question answer clientId 1 are you fine? yes Bob 2 are you fine? no Tom 3 what is your name Bob Bob 4 What is your name Tom Tom
ich in dieser Tabelle den Primärschlüssel wählen haben, alle Antworten auf die Frage "Wie heißt du?", aber nur für diejenigen, die mit "Ja" zu "geht es dir gut" beantwortet (dh ich möchte 3)
Ich habe versucht, eine Unterabfrage in einer where in-Klausel so :
SELECT primaryKey FROM (`questionTable`) WHERE clientId IN( SELECT clientId FROM `questionTable` WHERE (question = "are you fine" AND answer = "yes") ) AND question = "What is your name"
Diese Abfrage endet eigentlich nie, sie wirft keinen Fehler, sie läuft einfach für immer.
Die einzige Lösung, die ich gefunden habe, involvieren die Auswahl der clientId anstelle des Primärschlüssels, aber das ist zu langsam und ich möchte einen Weg finden, um den Primärschlüssel in einer Abfrage abzurufen.
Sie müssen die Indizes der Tabellen zeigen (ich denke, Sie haben keine Ausnahme Primärschlüssel). Und Sie sollten eine Frage-Tabelle haben, wo Sie die Spalten Frage, Frage, zB 1, "geht es Ihnen gut" und 2, "wie heißt du" und dann haben Sie diese Frage in Ihrer Tabelle und fügen Sie einen Index dafür . Gleiches für clientId. – Solarflare