2 Stimmen

Mysql - Kann ich ein Subselect-Ergebnis abrufen und es in einer WHERE-Klausel verwenden?

Ich möchte den von einer Unterauswahl in MySQL zurückgegebenen Wert sowohl abrufen als auch in einer Where-Klausel verwenden. Ist dies möglich? Es scheint nicht notwendig zu sein, die Unterabfrage zweimal auszuschreiben - aber wenn ich es brauche, wird MySQL dann so schlau sein, sie nur einmal auszuführen?

Ich habe Folgendes ausprobiert, was nicht funktioniert hat:

SELECT 
  (SELECT 1 FROM table WHERE somereallycomplicatedclause = 'something')
      AS subselectresult 
FROM content WHERE subselectresult = 1

Dies führt zu diesem Fehler:

#1054 - Unknown column 'subselectresult' in 'where clause'  

Danke

2voto

nickf Punkte 517253

Sie können keine Spaltenalias in einer WHERE-Klausel verwenden. Versuchen Sie, es in HAVING zu setzen, dann sollte es funktionieren.

Erläuterung hier: http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

0voto

Cătălin Pitiș Punkte 13785

Ihre Anfrage, wie Sie sie dargestellt haben, ist seltsam. Sie können das gleiche Ergebnis auf diese Weise erreichen (Kreuzprodukt):

SELECT S.One
FROM contacts,
(SELECT DISTINCT 1 as One FROM table WHERE somereallycomplicatedclause = 'something') S

Ich denke, Sie sollten mehr darüber sagen, was Sie zu lösen versuchen (z. B. was ist die Verbindung zwischen der Unterabfrage und der Tabelle Kontakte)?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X