admin

在此SQL中指的是什么?

sql

我的同事在我的代码(如下所示)中有一个简单的查询。这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;

阅读 166

收藏
2021-06-07

共1个答案

admin

您的同事SELECT COUNT(*)使用他命名的子查询创建了一个查询()t。这t只是一个临时表名,它指向

SELECT AttemptNo FROM attempt_exercise
  WHERE FK_UId = @uId AND FK_EId = @eId AND Mode = @mode

他本来可以更合理地命名它temp。之所以变成表格,是因为在MySQL中,SELECT查询返回的数据行类似于表格。因此,此内部查询获取AttemptNo,并创建一个临时表t。然后,外部查询将对该数据进行计数。

;当程序调用 字符串
查询时,查询的内部将使其成为完整的语句。如果不包括在内,则字符串query将不包含有效的MySQL语句。最后;是完成变量的分配。

2021-06-07