0

ユーザー定義の整数 (1 ~ rowCount()) を使用して、.sql テーブルの 1 つから行を削除したいと考えています。以下は疑似コードですが、私が望むものを示しています。

$i = 1; //example
$quedb = $db->query("
    DELETE *
        FROM table
        WHERE ROWNUMBER = '$i'
");

SQL 環境内でこれを行う方法はありますか? 特定の要素に基づいて行を削除したくありません (私の友人は、定義した行の要素を照会することを提案しましたが、n 番目の行 (n はユーザー定義) を削除したいだけです)。

4

2 に答える 2

1

あなたはそれをすべきではありません。
「n 番目の行」は、データベースのコンテキストではナンセンスです。
データベースは、おなじみのリストとは別のものです。あらかじめ定義された順序はまったくありません。 データベースは、順序付けするために選択されたフィールドに基づいて、選択時にのみ順序付けられる行の抽象的なヒープであり、常に異なります。

行を識別するには、まさに目的を果たすために発明された一意の識別子を使用する必要があります。
したがって、idauto_incremented 主キー フィールドをテーブルに追加し、それを使用して行を識別します。「他のテーブル」は、一貫性を保つ理由だけではありません。一部の行を追加または削除した場合でも、サイト上の独自のリンクにも一貫したアドレス指定が必要です。

出力を列挙したい場合は、PHP を使用して選択した時間に実行します。それが唯一の適切な方法です。

独自の車輪を発明する前に、データベース設計の基本を学んでください。
または、少なくとも経験豊富な人々からの良いアドバイスに従ってください。

于 2013-01-02T06:01:13.260 に答える
-1

ネストされたクエリを使用してそれを行うことができます。そのようです...

会社の ID をテーブルから削除 (テーブル制限 5,1 から ID を選択)

ただし、動作があまり一貫していないため、実際にはお勧めできません。

于 2013-01-02T05:45:32.563 に答える