我的一位朋友告诉我关于声明2 的信息,但到目前为止我使用了声明1 。
这两个SELECT语句之间有什么区别吗?
如果是,那是什么?
声明1:
SELECT Col1 FROM Table1;
声明2:
SELECT Table1.Col1 FROM Table1;
答案 0 :(得分:8)
完全没有区别。
但是当你有:
Select Table1.Col1 from Table1 INNER JOIN Table2 ON (Table1.id = Table2.ref_id);
第二个陈述可能是一个更好的主意,因为它将消除Col1的任何歧义。在这种情况下,Col1可以是Table1或Table2中的字段。
实际上,如果Table2有一个名为Col1的字段,则需要使用第二个语句。
答案 1 :(得分:2)
只要您使用单个表格,就没有任何区别。结果中的字段名称将取自表的字段名称,因此表名在结果中不可见。
如果您使用多个表,则可能需要指定要使用的字段:
select Table1.Col1, Table2.Col1
from Table1
inner join Table2 on Table2.Col2 = Table1.Col2
您还可以为表名使用别名,以便于阅读:
select a.Col1, b.Col1
from Table1 as a
inner join Table2 as b on b.Col2 = a.Col2
甚至没有as
关键字:
select a.Col1, b.Col1
from Table1 a
inner join Table2 b on b.Col2 = a.Col2
您还可以使用别名在输出字段中添加不同的名称:
select Table1.Col1 as Table1Col1, Table2.Col1 as Table2Col1
from Table1
inner join Table2 on Table2.Col2 = Table1.Col2
或者:
select Table1Col1 = Table1.Col1, Table2Col1 = Table2.Col1
from Table1
inner join Table2 on Table2.Col2 = Table1.Col2
答案 2 :(得分:1)
引用单个表时没有区别。当您连接两个或多个可能共享列名的表时,第二个示例的语法变得很重要,例如UserId。在这种情况下,您必须指定table_name.column名称以告诉sql处理器您想要哪个列。因此,在您的陈述2中,指定表格是多余的。