0

MySQLたとえば、テーブルの特定の行から値を取得したい: テーブルに 5 行ある場合、2 行目の値を取得したい。それを行うためのクエリは何ですか。

4

2 に答える 2

3

「2行目の値を取得したい」

この質問は、リレーショナル データベースには当てはまりません。リレーショナル データベースには、行の順序という固有の概念がないため、「1 行目」や「4 行目」などというものはありません。

リレーショナル データベースでは、テーブルに 1 つ以上のキーが必要です。キーは、NULL 可能ではない列またはその組み合わせであり、値の個別の組み合わせに対して最大で 1 つの行を持ちます。その後、キーを使用して行を取得できます。

行に特定の順序を課すことが理にかなっている可能性があります。その後、序数の位置で行を参照できます。順序付けは、ORDER BY を使用して行われ、その後に順序を決定する式のリストが続き、次に、取得する結果の「スライス」を指定する LIMIT 句が続きます。

他の回答では LIMIT について言及されていますが、ORDER BY 句は除外されています。これは、行 #x として現在返されているものが、次回まったく同じクエリを実行したときに返されるという保証がないことを意味します。

行に位置があると考えるのではなく、行にキーがあると考え、それを使用して次のように特定の行を取得する必要があります。

SELECT ...
FROM   table
WHERE  column1 = value

または、複合キー (キーに複数の列) がある場合は、次のようになります。

SELECT ...
FROM   table
WHERE  column1 = value1
AND    column2 = value2
...
AND    columnN = valueN

それでも位置を使用したい場合は、必ず ORDER BY を使用して順序を課してください。

SELECT ...
FROM   table
ORDER BY column1, ..., columnN
LIMIT <offset>, <count>

where は序数位置を指定する整数リテラルであり、 はその位置から何行フェッチするかを指定する整数リテラルです。

于 2012-07-06T10:51:24.470 に答える
0

次のコードのようにLIMIT句 ( MySQL docu ) を使用できますが、何らかのソート ( ORDER BY col) の順序付けを適用しない限り、SQL には固有の順序付けがないため、出力される実際の行が異なる場合があることに注意してください。 -テーブル。

SELECT *
  FROM yourTable
  LIMIT 1,1

より良い解決策はid、テーブルに追加の列を追加し、それによって選択することidです。または、少なくともid前に説明したように、列を使用して並べ替えます。

于 2012-07-06T10:36:48.517 に答える