使用傳統的ASP和MS-SQL服務器2008聚合函數/分組依據 - 無效的列錯誤
我所試圖做的是選擇重複記錄,並指望他們這樣我就可以再更新的第一個和刪除休息。
我的查詢選擇重複確定,但只要我嘗試並引入計數,它會停止使用消息「列'calendar.id'在選擇列表中無效,因爲它不包含在聚合函數中或GROUP BY子句「。
我試圖重寫這個,並將計數添加到第二個SELECT並將該ID添加到GROUP BY(以及儘可能多的這種事物的組合,但我仍然可以得到錯誤。看着在stackoverflow的解決方案似乎有點複雜,並不真正適用(或我不是在尋找正確的東西)
我在哪裏出錯了? (也是這是最好的方法尋找和編輯一個小表(200k行?)
Dim strSQL_dup, rsSQL_dup, SQL_dupRecords, RecCount
strSQL_dup = "SELECT id, COUNT(id) AS RecCount FROM calendar WHERE start_date IN (SELECT start_date FROM calendar WHERE pId = '" & pId & "' GROUP BY start_date HAVING (COUNT(start_date) > 1)) "
Set rsSQL_dup = conn.Execute(strSQL_dup)
While Not rsSQL_dup.EOF
If RecCount = 1 Then
'will eventually update the row
response.write(rsSQL_dup("id")) ' id of first'
Else
'will eventually delete the other rows
response.write(rsSQL_dup("id")) ' id of subsiquet rows
End If
rsSQL_dup.MoveNext
Wend
@ Mihai - 它是calendar.id,沒有下劃線 –
與問題評論無關:你的代碼可能(很可能)非常容易發生SQL注入攻擊。嘗試將其放入SP中並避免使用(無參數)動態查詢。 – jean