Domanda

in SQL, suppone ho bisogno di fare riferimento a un campo alias nella clausola having ma l'alias ha citazioni, come posso fare?

select (select...) as '005'
group by ...
having '005'>0
È stato utile?

Soluzione

Credo che vi manca una clausola FROM, e si dovrebbe usare apici inversi invece di apici:

SELECT (SELECT ...) AS `005`
FROM table1
GROUP BY ...
HAVING `005` > 0

Sarebbe utile se avete inviato la query completa, come sto indovinando un po 'qui come a ciò che si vuole fare.

Altri suggerimenti

I SQL-92 definisce standard utilizzando i doppi apici per un alias di colonna, piuttosto che singoli apici. Nella maggior parte dei database, personaggi insoliti sono consentiti solo se si utilizza le virgolette doppie.

Detto questo, non tutti i database supportano riferimento a un alias di colonna (nella stessa query) nelle clausole GROUP BY o HAVING. Per le query portatili, non mi consiglia la pratica di fare riferimento a un alias di colonna nelle clausole GROUP BY o HAVING. Inoltre, la clausola HAVING è per aggregati - l'esempio semplificato che hai fornito deve attivare un errore perché non funzione di aggregazione. (IE: COUNT, AVG, MIN / MAX, ecc) viene effettuata sulla alias di colonna 005

I seguenti lavori per me su MySQL 4.1:

  SELECT COUNT(*) AS "005"
    FROM TABLE t
GROUP BY ...
  HAVING `005` > 0
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top