0
SELECT * FROM table t
SELECT t.* FROM table t

我尝试了它,它产生了相同的结果,但我想确保因为我正在重构一段使用第二个版本的代码,我很惊讶,因为它的编写时间更长,而且不那么简单。

这里有什么隐藏的东西吗?

MySQL 版本:5.5.29-0ubuntu0.12.04.2 (Ubuntu)

4

5 回答 5

6

在您的情况下,这两种说法都是相同的。

如果您在一个查询中连接多个表,则不会。

select * 

选择所有列。

select t.*

选择表 t 的所有列(或分配别名 t 的表)

于 2013-10-18T12:27:59.073 回答
2
SELECT * FROM table t and SELECT t.* FROM table t

返回整个表

SELECT t.* FROM table as t inner join table2 as t2 将仅返回“table”表中 SELECT * FROM table as t inner join table2 as t2 的字段,而将返回 table 和 table2 的字段

于 2013-10-18T12:29:49.807 回答
2

这两个语句将给出相同的结果,直到它与另一个表与某个表运算符组合为 Join,Apply 您需要从该表中唯一标识列(更具体地说是模棱两可的列)。

作为最佳实践,您应该使用列名而不是使用 select *,因为它使代码更具可读性,并且前端代码不会在表结构在任何时间点发生更改的情况下中断。

于 2013-10-18T12:31:54.283 回答
1

陈述是相同的。您所拥有的只是名为“t”的表“table”的别名。

于 2013-10-18T12:28:10.870 回答
1

SELECT *将返回查询中所有表的所有列。SELECT t.*将返回名为或别名为 的表中的所有列t。在您的示例中也是如此,因为只涉及一个表。

于 2013-10-18T12:28:23.850 回答