2017-04-30 7 views
0

いくつかの問合せを実行しており、同じ「ORA-00933:SQLコマンドが正しく終了しませんでした」というエラーが発生します。だからここに、彼らは以下のとおりです。最も「ORA-00933:SQLコマンドが正しく終了していません」というエラーが発生しました。

SELECT ArtistID, NumberofStreams 
FROM Songs 
GROUP BY SongID 
ORDER BY NumberOfStreams DESC 
LIMIT 1; 

--Returns最も曲で最も古いアルバムとそのアーティスト

SELECT ArtistName, AlbumName 
FROM Album 
ORDER BY ReleaseDate ASC 
LIMIT 1; 

--Returnsアーティストストリームた曲の

--Artist

SELECT ArtistID, COUNT(SongID) 
FROM Songs 
GROUP BY ArtistID 
ORDER By COUNT(SongID) DESC 
LIMIT 1; 

の表は、このように設定されています

歌(SongID、ARTISTID、SongName、SongName、SongLength)

アルバム(ALBUMID、ALBUMNAME、ARTISTID、ArtistName、NumberOfTracks、RELEASEDATE)

私はそれが私のBY ORDERまたはLIMITに関係していると思いますしかし、私はそれを理解できません

+0

*「私はそれが私のORDER BYまたはLIMITに関係していると思います」*場合あなたはそう思ったのですが、なぜ[**ドキュメント**](https://docs.oracle.com/database/121/SQLRF/statements_10002.htm#i2126435)を見てみてください。それからあなたは*知っています*。研究の不足のためにダウン投票の質問。 – Andreas

答えて

1

オラクルはLIMITをサポートしていません。あなたは、サブクエリでこれらを書き換えることができます。

SELECT x.* 
FROM (SELECT ArtistID, NumberofStreams 
     FROM Songs 
     GROUP BY SongID 
     ORDER BY NumberOfStreams DESC 
    ) x 
WHERE rownum = 1; 

のOracle 12cは+は、はるかに簡単かつ標準fetch first 1 row onlyをサポートしています。

 SELECT ArtistID, NumberofStreams 
     FROM Songs 
     GROUP BY SongID 
     ORDER BY NumberOfStreams DESC 
     FETCH FIRST 1 ROW ONLY 
+0

ありがとう!!これはトリックでした! – bohawk

関連する問題