Warum kann ich keine temporäre Spalte in der where-Klausel verwenden?
Zum Beispiel diese Abfrage:
%Vor% Dies ruft zwei Spalten auf, eine mit dem Namen product_brand
und eine mit dem Namen brand_count
. brand_count
wird im laufenden Betrieb erstellt und ist immer 1 oder 0, je nachdem, ob es 50 oder Produkte mit dieser Marke gibt oder nicht.
All dies macht für mich Sinn, außer dass ich nicht nur wählen kann, wenn brand_count = 1
wie in dieser Abfrage unten steht:
Das gibt mir diesen Fehler:
%Vor%Weil in SQL die Spalten zuerst "ausgewählt" und dann "projiziert" werden.
Sie müssen die vollständige Klausel verwenden, also benötigen Sie:
%Vor%Dies ist für jedes berechnete Feld in jeder SQL-Anweisung gleich.
Um zu vereinfachen:
%Vor%funktioniert nicht, aber:
%Vor%wird. In deinem Fall ist es dasselbe.
Weil es keine Ahnung hat, was diese Spalte ist, bis nach der Verarbeitung.
Wenn Sie auf die Spalte mit diesem Namen zugreifen möchten, müssten Sie eine Unterabfrage verwenden, andernfalls müssen Sie die Spalte ohne den Namen, den Sie angegeben haben, qualifizieren, indem Sie Ihre Fallanweisung wiederholen.
Wenn ich Ihre Absicht richtig gelesen habe, können Sie diese Abfrage so umschreiben, dass sie lautet:
%Vor% Dies wird Ihnen alle product_brands
geben, die eine count > 50
haben und Ihnen auch zeigen
die Zählung für jeden.
Tags und Links sql mysql mysql-error-1054