我的同事在我的代码(如下所示)中有一个简单的查询。这t是什么意思?另外;查询内部的作用是什么?我很确定那t不是我的数据库中的任何表或任何字段。猜猜这个查询的工作原理!!
t
;
string query = @"SELECT COUNT(*) FROM (SELECT AttemptNo FROM attempt_exercise WHERE FK_UId = @uId AND FK_EId = @eId AND Mode = @mode)t; ";
代码如下(如果需要,可获取其他信息):
MySqlCommand cmd = new MySqlCommand(query, _conn); cmd.Parameters.AddWithValue("@uId", uId); cmd.Parameters.AddWithValue("@eId", eId); cmd.Parameters.AddWithValue("@mode", mode); attemptCount = Convert.ToInt32(cmd.ExecuteScalar()); _conn.Close(); return attemptCount;
您的同事SELECT COUNT(*)使用他命名的子查询创建了一个查询()t。这t只是一个临时表名,它指向
SELECT COUNT(*)
SELECT AttemptNo FROM attempt_exercise WHERE FK_UId = @uId AND FK_EId = @eId AND Mode = @mode
他本来可以更合理地命名它temp。之所以变成表格,是因为在MySQL中,SELECT查询返回的数据行类似于表格。因此,此内部查询获取AttemptNo,并创建一个临时表t。然后,外部查询将对该数据进行计数。
temp
SELECT
AttemptNo
;当程序调用 字符串 查询时,查询的内部将使其成为完整的语句。如果不包括在内,则字符串query将不包含有效的MySQL语句。最后;是完成变量的分配。
query