我是SQL新手,所以我不知道术语,我正在说话,但我不知道在哪里寻找这种语法 -
select name = p.e_full_Name
from db..port p, db..port_x il
where p.port_id = il.port_id and p.port_id = "blah"
根据我的推断,name
将成为p.e_full_name列的名称,p
和il
是from语句中定义的变量({{1} }是p
表,db..port
是il
表)。它是否正确?这个语法叫什么,我在哪里可以读到它?
答案 0 :(得分:1)
这是两个表之间JOIN操作的旧语法。
p和il是各个表的别名。
像你这样的查询的推荐语法是
选择col 从table1 t1开始 加入表t2 在t1.column = t2.column
对已完成连接的列使用索引以提高性能
答案 1 :(得分:1)
SELECT columns
FROM <table> <alias>
JOIN <anotherTable> <differentAlias>
ON alias.column = differentAlias.column
WHERE alias.column = 'Blah'
在您的示例中,p和il作为表的别名,以便再次保存键入表名。 p.port_id = il.port_id是一个连接条件(应该是ON子句的一部分)
select name = p.e_full_Name
from db..port p, db..port_x il
where p.port_id = il.port_id and p.port_id = "blah"
搜索JOIN,你会找到例子。将代码调整为第一个示例,您的示例是不再使用的旧样式JOIN
答案 2 :(得分:1)
问:这是正确的吗?
A:基本上,是的。
但是关于
中对name
的引用
SELECT name = expr ...
分配给表达式的别名。从查询返回的结果集将包含指定的别名作为列名。
该语法是SQL Server中的非标准扩展(Oracle或MySQL不支持)。它等同于ANSI标准:
SELECT expr AS name ...
对于查询中的 p
和 il
,这些并非真正的变量。其中每个都是分配给表的* 别名 *,而不是在SELECT列表中表达。对查询中其他位置的表别名的引用是对表的引用。对于一个简单的表,不需要别名。在更一般的情况下,我们需要为某些行源(在查询中多次引用的表和内联视图)分配别名。因此,为简单表格分配别名是我们熟悉的,熟悉的,它的模式。
问:这个语法叫什么,我在哪里可以读到它?
表和列别名都是ANSI SQL标准的一部分。