自動増分フィールドは使用できません。
row_number()は、選択が必要な行です。
どうすればよいですか?
EDIT:まあ、iSql * plusを使って練習していますが、何らかの理由でlimitとauto_incrementを使うのは不正です。私はシーケンスとトリガーを作成して終了し、エントリがあるたびにidを1ずつ上げました。
自動増分フィールドは使用できません。
row_number()は、選択が必要な行です。
どうすればよいですか?
EDIT:まあ、iSql * plusを使って練習していますが、何らかの理由でlimitとauto_incrementを使うのは不正です。私はシーケンスとトリガーを作成して終了し、エントリがあるたびにidを1ずつ上げました。
を選択することができます。
documentationが説明するように、最初の引数は返される最初の行のオフセットを指定し、2番目の引数は返す最大行数をに指定します。
これは0ベースのインデックスであることに注意してください。したがって、行番号nを使用する場合、最初の引数はn-1である必要があります。 2行目の引数は常に1行しか必要ないので、になります。たとえば、あなたが行番号テーブルcustomer
のたい場合:
SELECT * FROM customer LIMIT 55,1
あなたが代わりにWHERE row_number() = 3
のLIMIT 2,1
を使用することができ、自動でテーブル内のidフィールドを生成追加し、このIDによって
SELECT * FROM CUSTOMER WHERE CUSTOMER_ID = 3;
をあなたはそのような行を選択することはできません。あなたが状況と比較されているフィールドがある場合はここで
3は、動作するクエリですがなるその値フィールドを指定する必要がid
select * from customer where `id` = 3
あなたのテーブルを使用して作成する必要があります理想的にAUTO_INCREMENT属性を持つユニークなIDフィールド。例:次に、あなたがこの表の第3レコードにアクセスすることができます
CREATE TABLE Persons
(
P_Id int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
PRIMARY KEY (P_Id)
)
:
SELECT * FROM Persons WHERE P_Id = 3
SET @customerID=0;
SELECT @customerID:[email protected]+1 AS customerID
FROM CUSTOMER ;
あなたはこのようにSQLからデータセットを取得し、Javaデータ構造にそれを取り込むことができます(のようなリスト)を作成し、そこに必要な並べ替えを行います。それは潜在的に毎回異なる行を返すことができますように、SQLテーブルがデフォルトで注文、および行の順序セット以外からn行を求めていない
(多分同等のインターフェースの助けを借りて)意味がありませんORDER BYを指定しない限り:
select * from customer order by id where row_number() = 3
(時にはMySQLテーブルが内部的な順序で表示されますが、この動作に依存することはできません)。そして、あなたが、LIMIT offset, row_count
を使用することができますので、数3は2をオフセットとなり、行オフセット0ベース:
select * from customer order by id
limit 2, 1
か、LIMIT row_count OFFSET offset
を使用することができます。
select * from customer order by id
limit 1 offset 2
あなたはROW_NUMBER() ''とはどういう意味ですか?レコードはMySQLで注文されません。コンテンツに基づいて、希望するデータを他の方法で識別する必要があります。 – eggyal
@eggyal:標準のANSI SQLには 'row_number()'関数がありますが(Marlonの使い方は間違いですが)MySQLはそれをサポートしていません(他の多くの最新のSQL機能と同じように) –