Ich versuche, mit MySQL eine Ansicht mit der "WITH" -Klausel zu erstellen
WITH authorRating(aname, rating) AS
SELECT aname, AVG(quantity)
FROM book
GROUP BY aname
MySQL scheint dies jedoch nicht zu unterstützen.
Ich fand das ziemlich normal und bin mir sicher, dass Oracle dies unterstützt. Gibt es überhaupt eine Möglichkeit, MySQL zu zwingen, die "WITH" -Klausel zu verwenden? Ich habe es mit der MyISAM- und innoDB-Engine versucht. Beide funktionieren nicht.
quelle
Sie könnten an so etwas interessiert sein:
quelle
Subquery
ist der Name, den ich für die abgeleitete Tabelle selbst verwendet habe. Wenn Sie verwendenfrom ( ... )
, erstellen Sie so etwas wie eine temporäre Tabelle (eine abgeleitete Tabelle) und es erfordert einen Namen. Deshalb habe ich verwendetas Subquery
. Wenn Sie Ihre Frage beantworten, können Sie dies, aber Sie müssen der äußeren abgeleiteten Tabelle (kurz vor demGroup By
) einen Namen geben . Hoffe das hat geholfen.Sie haben die richtige Syntax:
Wie bereits erwähnt, unterstützt MySQL diesen Befehl jedoch nicht. WITH wurde in SQL hinzugefügt: 1999; Die neueste Version des SQL-Standards ist SQL: 2008. Weitere Informationen zu Datenbanken, die die verschiedenen Funktionen von SQL: 1999 unterstützen, finden Sie auf Wikipedia .
MySQL ist bei der Unterstützung des SQL-Standards traditionell etwas zurückgeblieben, während kommerzielle Datenbanken wie Oracle, SQL Server (vor kurzem) und DB2 ihnen etwas genauer gefolgt sind. PostgreSQL ist normalerweise auch ziemlich standardkonform.
Vielleicht möchten Sie sich die Roadmap von MySQL ansehen. Ich bin mir nicht ganz sicher, wann diese Funktion unterstützt wird, aber sie eignet sich hervorragend zum Erstellen lesbarer Rollup-Abfragen.
quelle
Oracle unterstützt WITH.
Es würde so aussehen.
@ysth WITH ist schwer zu googeln, da es sich um ein allgemeines Wort handelt, das normalerweise von der Suche ausgeschlossen wird.
Sie sollten sich die SELECT-Dokumente ansehen, um zu sehen, wie das Factoring von Unterabfragen funktioniert.
Ich weiß, dass dies das OP nicht beantwortet, aber ich räume alle Verwirrungen auf, die möglicherweise begonnen haben.
quelle
MariaDB unterstützt jetzt WITH. MySQL ist im Moment nicht. https://mariadb.com/kb/en/mariadb/with/
quelle
Aufbauend auf der Antwort von @Mosty Mostacho können Sie in MySQL Folgendes tun, um festzustellen, welche Einträge in einer Tabelle nicht vorhanden sind und sich in keiner anderen Datenbank befinden.
Möglicherweise möchten Sie einen Texteditor mit Makrofunktionen verwenden, um eine Liste von Werten in die angegebene select union-Klausel zu konvertieren.
quelle
quelle
Haben Sie schon einmal Temporary Table ausprobiert? Dies löste meine Convern:
Dann können Sie diese Tabelle in jeder Auswahl in dieser Sitzung verwenden:
quelle