以下sql语句有什么不同吗?

时间:2013-10-18 12:26:34

标签: mysql sql

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

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

这里有隐藏的东西吗?

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

5 个答案:

答案 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的表中返回所有列。在您的示例中也是如此,因为只涉及一个表。