SELECT * FROM table t
SELECT t.* FROM table t
我尝试了它并且它产生了相同的结果,但我想确定因为我正在重构使用第二个版本的一段代码,我感到很惊讶,因为它写的时间更长,而且不那么简单。
这里有隐藏的东西吗?
MySQL版本:5.5.29-0ubuntu0.12.04.2(Ubuntu)
答案 0 :(得分:6)
在您的情况下,两种陈述都是相同的。
如果您在一个查询中加入多个表,则不会出现这种情况。
select *
选择所有列。
select t.*
选择表t 的所有列(或分配了别名t的表)
答案 1 :(得分:2)
SELECT * FROM table t and SELECT t.* FROM table t
返回整个表格
SELECT t.* FROM table as t inner join table2 as t2
只返回“表”表中的字段
SELECT * FROM table as t inner join table2 as t2
将返回table和table2的字段
答案 2 :(得分:2)
这两个语句将提供相同的结果,直到它与另一个表组合,其中一些表运算符为Join,Apply,您需要在此表中唯一标识列(更具体地说是不明确的列)。
作为最佳实践,您应该使用列名而不是使用select * ,因为它使代码更具可读性,并且前端代码不会中断,以防表结构在任何时间点发生更改。
答案 3 :(得分:1)
陈述完全相同。你所拥有的只是一个名为“t”的表“table”的别名。
答案 4 :(得分:1)
SELECT *
将返回查询中所有表的所有列。 SELECT t.*
将从名为t
的表中返回所有列。在您的示例中也是如此,因为只涉及一个表。