Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 这两个SELECT语句之间有什么区别吗?_Sql - Fatal编程技术网

Sql 这两个SELECT语句之间有什么区别吗?

Sql 这两个SELECT语句之间有什么区别吗?,sql,Sql,我的一位朋友告诉我关于语句2,但到目前为止,我使用了语句1 这两个SELECT语句之间有什么区别吗 如果是,是什么 声明1: SELECT Col1 FROM Table1; SELECT Table1.Col1 FROM Table1; 声明2: SELECT Col1 FROM Table1; SELECT Table1.Col1 FROM Table1; 没什么区别 但是,如果您有: Select Table1.Col1 from Table1 INNER JOIN Tab

我的一位朋友告诉我关于语句2,但到目前为止,我使用了语句1

  • 这两个SELECT语句之间有什么区别吗

  • 如果是,是什么

声明1:

 SELECT Col1 FROM Table1;
SELECT Table1.Col1 FROM Table1;
声明2:

 SELECT Col1 FROM Table1;
SELECT Table1.Col1 FROM Table1;
没什么区别

但是,如果您有:

Select Table1.Col1 from Table1 INNER JOIN Table2 ON (Table1.id = Table2.ref_id);
第二个语句可能是一个更好的主意,因为它将消除Col1的任何歧义。在这种情况下,Col1可以是表1或表2中的字段

事实上,如果Table2有一个名为Col1的字段,则需要使用第二条语句。

没有任何区别

但是,如果您有:

Select Table1.Col1 from Table1 INNER JOIN Table2 ON (Table1.id = Table2.ref_id);
第二个语句可能是一个更好的主意,因为它将消除Col1的任何歧义。在这种情况下,Col1可以是表1或表2中的字段


事实上,如果Table2有一个名为Col1的字段,则需要使用第二条语句。

引用单个表时没有区别。当您连接两个或多个可能共享列名(例如UserId)的表时,第二个示例中的语法变得非常重要。在这种情况下,您必须指定table_name.column name来准确地告诉sql处理器您想要哪一列。因此,在语句2中,指定表是多余的。

引用单个表时没有区别。当您连接两个或多个可能共享列名(例如UserId)的表时,第二个示例中的语法变得非常重要。在这种情况下,您必须指定table_name.column name来准确地告诉sql处理器您想要哪一列。因此,在语句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 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
或:


如果有两个表,每个表包含一个名为Col1的列,您会怎么做?如果有两个表,每个表包含一个名为Col1的列,您会怎么做?