[英]Are there any differences in the following sql statements?
SELECT * FROM table t
SELECT t.* FROM table t
我尝试了一下,结果还是一样,但是我想确定一下,因为我正在重构使用第二个版本的代码,令我感到惊讶的是,它既更长又不那么简单。
这里有隐藏的东西吗?
MySQL版本:5.5.29-0ubuntu0.12.04.2(Ubuntu)
在您的情况下,这两个语句是相同的。
如果您在一个查询中连接多个表,则不会。
select *
选择所有列。
select t.*
选择表t的所有列(或为表分配别名t)
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的字段
这两个语句将给出相同的结果,直到将其与具有表运算符的另一个表合并为Join,Apply为止,在这里您需要从该表中唯一标识列(尤其是歧义列)。
最佳做法是使用列名,而不要使用select *,因为这样可以使代码更具可读性,并且在任何时候更改表结构的情况下,前端代码都不会中断。
这些陈述是相同的。 您所拥有的只是表“ table”的别名“ t”。
SELECT *
将返回查询中所有表的所有列。 SELECT t.*
将返回名为t
或别名为t
的表中的所有列。 您的示例中也是如此,因为只涉及一个表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.