mysql - 这条SQL中的 "t"指的是什么?

标签 mysql sql select count

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

相关文章:

mysql - SQL查询问题

mysql - 可以组合多个 TINYINT/boolean 列并作为 MySQL 存储过程中的位列返回吗?

sql - 从字符串中删除特定单词

sql - 来自 SELECT 和来自 VIEW 内的 SELECT 的不同结果

php - 通过权限位掩码从 MySQL 数据库中选择用户?

php - 查询列中的多个值

php - 组合字母数字时如何选择真值?

c# - Entity Framework 6 多表对一外键关系代码先

sql-server - Oracle 和 SQL Server select (+) 等效

mysql - 在 MySQL 中查找字段大于集合中所有值的记录