SQL-Abfrage-Syntax : Mit dem Tabellen-alias count ungültig ist? Warum?

Könnte mir jemand bitte erklären, warum die folgende Abfrage ist ungültig? Ich bin mit dieser Abfrage für eine Oracle 10g Datenbank.

select count(test.*) from my_table test;

Bekomme ich die folgende Fehlermeldung: ORA-01747: Ungültiger Benutzer.Tabelle.Spalte, Tabelle.Spalte oder Spalte Spezifikation

jedoch, die folgenden beiden Abfragen gültig sind.

select count(test.column) from my_table test;

select test.* from my_table test;
  • Denn Oracle hat die Lücken in Ihrer Unterstützung für den standard SQL.
  • MySQL und SQL Server nicht unterstützen diese syntax zu.
  • MySQL unterstützt die syntax (habe es gerade getestet mit der version 5.1.46). Habe ich noch nicht getestet SQL Server.
  • CREATE TABLE t_count (id INT NOT NULL); SELECT COUNT(t_count.*) FROM t_count;. Sie haben einen Fehler in Ihrer SQL-syntax; Lesen Sie im Handbuch, das entspricht Ihrer MySQL-server-version für den richtigen syntax in der Nähe '*) VON t_count' at line 1
  • Karwin: SELECT COUNT(test.*) FROM MY_TABLE test schlägt fehl - "Falscher syntax in der Nähe '*'", die auf SQL Server 2005.
  • Aha, Sie sind richtig. Ich mich zurückziehe, meine Aussage.
  • Sind Sie versuchen, um die Anzahl der Datensätze, die mindestens einen nicht-null-Wert in einer Spalte? In Oracle, dies zu tun, müssen Sie so etwas wie SELECT COUNT(*) FROM my_table WHERE COALESCE(colA, colB, colC, colD, etc) IS NOT NULL - dies ist normalerweise nicht sinnvoll, da eine Tabelle mit allen Spalten NULLin der Lage ist in der Regel die Zeichen für schlechtes design.

InformationsquelleAutor contactmatt | 2010-05-25
Schreibe einen Kommentar