bugfix> php > 投稿

みんなが一番上/最近3番目の行を選択しようとしています、私はこれを試しましたがうまくいきません、どこでミスをしますか?

<?php
$sql = "SELECT * FROM songs ORDER BY id ASC LIMIT 1,2;";
$result = mysqli_query($con, $sql);
$resultCheck = mysqli_num_rows($result);
if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        echo $row['artist'];
    }
}
?>

回答 4 件
  • オフセットを使用:

    SELECT * FROM songs ORDER BY id ASC LIMIT 1 OFFSET 2
    
    

    (使用している)略記が逆になっているため、OFFSETが最初でLIMITになります。

    SELECT * FROM songs ORDER BY id ASC LIMIT 2,1;
    
    

  • オフセットを使用

    ここで制限1それは単に意味し、1つのレコードが必要です オフセットは最初の2つをスキップすることを意味します

    SELECT * FROM songs ORDER BY id ASC LIMIT 1 OFFSET 2
    
    

  • 制限後に使用するパラメーターは逆にする必要があります。 最初のパラメーターはオフセットで、2番目のパラメーターは必要なレコード数です。

    SELECT * FROM songs ORDER BY id ASC LIMIT 2,1
    
    

  • これは私の意見です- このようなソートは、常にクライアントソフトウェアで実行する必要があります。 データを抽出-SQLのORDER BYを削除... クライアントで並べ替え、3行目を選択して呼び出し元に返します。

    SQLクエリを使用してこれらすべてを実行するよりも、スケーラビリティと保守性が向上します。

    これは、カスタムソフトウェアを使用してこれらのタイプの問題を解決する際の私の頼りになるアプローチであり、時間の経過とともに実証されています。

    これについて考える: 曲からIDを選択

    IDをコードに入れて、そこでソートします。次に、リストの3番目のものを選択しました。次に:

    ID = VALUE FROM IDを超える曲からタイトル、著者、アーティストを選択します

    はい、データベースに2回アクセスしますが、これらは2つの非常に効率的なクエリであり、提案する派手な順序よりも、データベースの規模に応じてパフォーマンスが向上します。

あなたの答え