我的同事编写的代码(如下所示)中有一个简单的查询。 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 AttemptNo FROM attempt_exercise WHERE FK_UId = @uId AND FK_EId = @eId AND Mode = @mode
他本可以将其命名为 temp
以更明确一点。这变得像表的原因是,在 MySQL 中,SELECT
查询返回的数据行就像表一样。因此,此内部查询获取 AttemptNo
,并创建一个临时表 t
。外部查询然后计算此数据。
查询里面的;
是为了在程序调用string查询时,让它成为一个完整的语句。如果不包括在内,字符串 query
将不会包含有效的 MySQL 语句。最后的;
是完成对变量的赋值。
关于mysql - 这条SQL中的 "t"指的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9442119/