0

列 appClickCount に基づいて上位 10 件の結果を返し、列 appFAIList を 1 に更新し、上位 10 を下回るものは列 appFAIList の値を 0 にするクエリを VB で実行するにはどうすればよいですか?

Using sqlCon = New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\ITCSDatabase.mdf;Integrated Security=True")
        sqlCon.Open()
        Dim sqlText = "SELECT top 10 appClickCount " & _
            "FROM appTable" & _
        "UPDATE appTable SET appFAIList = 1"
        Dim cmd = New SqlCommand(sqlText, sqlCon)
        cmd.ExecuteScalar()
    End Using
4

2 に答える 2

3

代わりにこの SQL ステートメントを実行します

with t as (
  select *, rn=row_number() over (order by 1/0)
  from appTable)
update t set
  appFAIList = case when rn<=10 then 1 else 0 end

ただし、vb.netコードにはかなりバグがあります。単一行、単一列の結果を返すことを目的としたExecuteScalarを使用しています。書かれているように、最初の appClickCount 値が得られます。

もう 1 つの問題はTOP 10、対応する ORDER BY なしで SQL Server を使用すると、テーブルから任意の 10 レコードが返されることを意味します

于 2013-04-25T05:05:08.990 に答える