我正在尝试搜索MySQL
表中的数据...
Dim cmd As New MySqlCommand
Dim qry As String = "SELECT SUM(amt) FROM fee_payment WHERE roll_no='" + st_roll + "' AND course='" + c_id + "'"
cmd.Connection = conn
cmd.CommandText = qry
Dim dt As New DataTable
Dim dadapter As New MySqlDataAdapter
dadapter.SelectCommand = cmd
dadapter.Fill(dt)
If dt.Rows.Count > 0 Then
Dim dr As MySqlDataReader = cmd.ExecuteReader
While dr.Read
Dim t_paid = dr("SUM(amt)")
TbDue.Text = tot_fees - t_paid
End While
dr.Close()
End If
令人惊讶的是,上述dt.Rows.Count
返回1
,而表fee_payment
没有数据。
我该怎么办?
答案 0 :(得分:2)
没有对结果感到惊讶。
没有group by
的聚合查询总是返回一行。如果过滤掉所有行,则大多数聚合函数返回NULL
,但COUNT()
和COUNT(DISTINCT)
返回0
。
这是标准行为以及所有数据库的工作方式。在某些情况下,它实际上非常方便。
编辑:
如果您想要返回 no 行的行为,只需添加group by
:
SELECT SUM(amt)
FROM fee_payment
WHERE roll_no = '" + st_roll + "' AND course = '" + c_id + "'
GROUP BY roll_no, course;