Die Verwendung von Spaltenaliasen in SQL SELECT-Anweisungen in nachfolgenden Ausdrücken
In SQL kann es vorkommen, dass Sie Spaltenaliase in nachfolgenden Ausdrücken in derselben SELECT-Anweisung verwenden möchten. Der Versuch, dies zu tun, kann jedoch zu einem Fehler führen, der dem in der Frage beschriebenen ähnelt.
Der Grund für diese Einschränkung liegt darin, dass Spaltenaliase zusammen verarbeitet werden, wenn die SELECT-Anweisung ausgewertet wird. Daher sind Aliase nicht innerhalb derselben SELECT-Anweisung verfügbar.
Lösung: Kapseln Sie die Abfrage in einer Unterabfrage
Um dieses Problem zu lösen, können Sie die ursprüngliche Abfrage in einer Unterabfrage kapseln. Dadurch wird ein neuer Bereich erstellt, in dem der Spaltenalias außerhalb der Unterabfrage verwendet werden kann.
So ändern Sie die Abfrage, um die Spaltenaliase avg_time und cnt im Ausdruck ROUND(avg_time * cnt, 2) zu verwenden:
<code class="language-sql">SELECT stddev_time, max_time, avg_time, min_time, cnt, ROUND(avg_time * cnt, 2) as slowdown FROM ( SELECT COALESCE(ROUND(stddev_samp(time), 2), 0) as stddev_time, MAX(time) as max_time, ROUND(AVG(time), 2) as avg_time, MIN(time) as min_time, COUNT(path) as cnt, path FROM loadtime GROUP BY path ORDER BY avg_time DESC LIMIT 10 ) X;</code>
Durch Kapselung der Abfrage in einer Unterabfrage kann der Alias in einer äußeren SELECT-Anweisung verwendet werden, sodass Sie den Ausdruck ROUND(avg_time * cnt, 2) erfolgreich auswerten können.
Das obige ist der detaillierte Inhalt vonKann ich Spaltenaliase in nachfolgenden Ausdrücken innerhalb derselben SQL-SELECT-Anweisung verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!