0

重複の可能性:
主キーが異なる SQL の重複

私のクエリは、グリッドビューですべての重複を返します。ただし、重複から 1 つのレコードを選択すると、両方が削除されます。ユーザーリストのすべてのユーザーに対して直接選択を使用すると、削除オプションは選択された行のみを削除します。dup からレコードを選択すると、select コマンドが使用されているため、両方の主キーが取得されていると思われます。

SelectCommand="SELECT [PKEY], [user] FROM [userlist]
            WHERE LogonName IN (
                SELECT [user]
                FROM [userlist]
                GROUP BY [user]
                HAVING (COUNT([user]) > 1))"
DeleteCommand="DELETE FROM [userlist] WHERE [PKEY] = @PKEY" >

ストレート選択を使用するときに機能するチェックボックスのコードビハインドを追加します。

if (checkbox.Checked)
            {
                int PKEY = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value);
                SqlDataSource1.DeleteParameters["PKEY"].DefaultValue = PKEY.ToString();
                SqlDataSource1.Delete();
            }
4

2 に答える 2

0

任意のレコードを選択できる場合、すべてのレコードを削除する簡単な方法ですが、グループごとに 1 つずつ、主キーの MAX を取得し、他のすべてを削除します。

DELETE FROM [userlist]
WHERE PKEY NOT IN (
    SELECT MAX(PKEY) pkey
    FROM [userlist]
    GROUP BY [user]
    )
于 2012-09-11T19:15:23.583 に答える
0

に戻る必要があり、削除PrimaryKeyするgridView.ときに選択した主キーを渡します。

テーブルのデータベースで、PKEY が PrimaryKey として定義されていることを確認する必要があります。

クエリに DISTINCT を追加することもできます。

SELECT DISTINCT ...
于 2012-09-11T19:09:20.253 に答える