如何计算表中一行中的所有列? 我在查询时遇到问题,我真的需要帮助。 有人帮助我。
我的表看起来像这样;
jhsf2
+-----------------------------------------+
|Stud_ID|M1|T1|W1|TH1|F1|M2|T2|W2|TH2|F2|
|1022234| |P |P |P |P |A |P |P | P | P|
|1045978| |P |P |P |P |P |P |P | P | P|
+---------------------------------------+
如果我有查询要这样做,我想要这样的结果。 我想从M1到F2计算一个值不是Null,它就是这样的。
jhsf2
+-----------------------------------------------+
|Stud_ID|Count(M1,T1,W1,TH1,F1,M2,T2,W2,TH2,F2) |
|1022234| 9 |
+-----------------------------------------------+
或者我想在mysql中使用WHERE查询,我不知道查询,但就像这样。
Select Stud_ID,M1,T1,W1,TH1,F1,M2,T2,W2,TH2 from jhsf2
WHERE Stud_ID = "131418100008"
and M1,T1,W1,TH1,F1,M2,T2,W2,TH2 T2, = "P"
+-----------------------------------------------+
|Stud_ID|Count(M1,T1,W1,TH1,F1,M2,T2,W2,TH2,F) |
|1022234| 8 |
+-----------------------------------------------+
答案 0 :(得分:1)
在MySQL中,您可以通过添加布尔值来计算值:
select stud_id,
( (m1 = 'P') + (m2 = 'P') + . . .
) as cnt
from jhsf2;
注意:拥有多个基本上包含数组的列在SQL中不是一个好的数据结构。通常,您需要每stud_id
行和列值一行。
答案 1 :(得分:0)
您可以通过检查非空值和星号(全部)
来尝试此操作 Select count(*) from
jhsf2 WHERE Stud_ID !=null and M1!=null and ..
.......
..........休息所有想要检查它的值是否正常的列。
答案 2 :(得分:0)
我不够聪明,无法创建一个选择来完成这项工作,但你可以在代码中完成。 我猜测学生证的数据类型为Long。如果是其他原因,请调整代码。
Private Sub GetCount()
Dim dictStudents As New Dictionary(Of Long, Integer)
Dim itgNonNullCount As Integer = 0
Dim strQuery As String = "Select * from jhsf2"
Using cn As New MySqlConnection("your connection string")
Using cmd As New MySqlCommand With {
.Connection = cn,
.CommandType = CommandType.Text,
.CommandText = strQuery}
cn.Open()
Using dr As MySqlDataReader = cmd.ExecuteReader
If dr.HasRows Then
While dr.Read
'Loop through each column
For i As Integer = 1 To 10 'number of columns -1
If dr.GetValue(i) IsNot DBNull.Value Then
itgNonNullCount += 1
End If
Next
'Add the student ID and count to the dictionary
dictStudents.Add(dr.GetInt64(0), itgNonNullCount)
'reset the count back to zero for the next record
itgNonNullCount = 0
End While
End If
End Using
End Using
End Using
End Sub