LIMIT
キーワードは、標準に対するMySQL固有の拡張機能です。
ROWNUM
は、Oracle固有の疑似列です。
LIMIT
とROWNUM
が「機能していません」と表示される可能性があることは間違いありません。
質問を示すものではありませんRDBMSが使用されている ... MySQLの、PostgreSQLのは、Oracle、SQL Serverの、DB2、Teradataのなど
(注:使用して専用として "機能していません"
説明は、クエリの実行が何らかの種類のエラーを返すかどうか、またはクエリが実行されており、期待されていない結果セットを返すかどうかを示すものではありません。
あなたが「機能していない」と記述した文は、表示されていません。
結果を得るための1つのANSI標準SQLアプローチは、標準MAX()
集約を使用してその「最大」値を取得しています。これを行う1つの方法は、インラインビューを使用することです。例えば:また、インライン・ビューとして使用することができる
SELECT MAX(s.cnt) AS max_cnt
FROM (SELECT COUNT(t.productid) AS cnt
FROM orderline_t t
GROUP BY t.productid
) s
...
SELECT MAX(q.productid)
FROM (SELECT MAX(s.cnt) AS max_cnt
FROM (SELECT COUNT(t.productid) AS cnt
FROM orderline_t t
GROUP BY t.productid
) s
) r
JOIN (SELECT p.productid
, COUNT(p.productid) AS cnt
FROM orderline_t p
GROUP BY p.product_id
) q
ON q.cnt = r.max_cnt
なお回の同一の「最大」数を注文された2つの以上の製品がある場合、このクエリは、それらのproductidのうちの1つだけを返します。
これは、ほとんどのリレーショナルデータベースで機能するはずです。
同等の結果を返す他のクエリパターンがあります。
しかし、この例は、ほとんどのRDBMSがSQL標準への拡張を提供する理由を説明するのに役立ちます。
MySQLの」... BY ... LIMIT 1" ORDER
SQL Serverの "TOP 1を選択..."
など
タグを使用しているデータベースとあなたの質問。 –
なぜlimtが動作しないのですか(より興味深いです) – Saikios
Im Teradataを使用し、データベース名はdb_pvfc10_bigです。私の最初の質問と私はSQLの初心者です。 –