“什么是”呢;“大师加入”;在sql中

“什么是”呢;“大师加入”;在sql中,sql,sql-server,database,join,Sql,Sql Server,Database,Join,第一个和第二个查询之间有什么区别 “大师加入”的目的是什么?我们应该在什么时候使用它 没有什么不同,它在功能上是相同的。 为了解释,我对列名进行了限定,以证明master只是一个别名 我强烈建议对查询的其余部分也进行限定,因为…car on cid=id现在可以工作,但形式不好,因为如果sales或car表具有相同的列名,则会出现歧义错误 另外,决定是否要使用内部联接,左侧外部联接,等等。。因为从以后的维护角度来看,您的需求更为明确 CREATE TABLE car (id INT, name1

第一个和第二个查询之间有什么区别


“大师加入”的目的是什么?我们应该在什么时候使用它

没有什么不同,它在功能上是相同的。 为了解释,我对列名进行了限定,以证明
master
只是一个别名

我强烈建议对查询的其余部分也进行限定,因为
…car on cid=id
现在可以工作,但形式不好,因为如果
sales
car
表具有相同的列名,则会出现歧义错误

另外,决定是否要使用
内部联接
左侧外部联接
,等等。。因为从以后的维护角度来看,您的需求更为明确

CREATE TABLE car (id INT, name1 CHAR(15))
CREATE TABLE sales (sid INT, cid INT, year1 INT)

INSERT INTO car
VALUES (1, 'vento'), (2, 'vento'), (3, 'baleno'), (4, 'swift')
INSERT INTO sales
VALUES (1, 1, 2017), (2, 3, 2018), (3, 3, 2017), (5, 4, 2017)

--verify
--SELECT * FROM car
--SELECT * FROM sales

--1st query
SELECT sid, cid, year1, name1
FROM sales master
INNER JOIN car ON cid = id 

--2nd query
SELECT sid, cid, year1, name1
FROM sales
INNER JOIN car ON cid = id 

没有什么不同,它在功能上是相同的。 为了解释,我对列名进行了限定,以证明
master
只是一个别名

我强烈建议对查询的其余部分也进行限定,因为
…car on cid=id
现在可以工作,但形式不好,因为如果
sales
car
表具有相同的列名,则会出现歧义错误

另外,决定是否要使用
内部联接
左侧外部联接
,等等。。因为从以后的维护角度来看,您的需求更为明确

CREATE TABLE car (id INT, name1 CHAR(15))
CREATE TABLE sales (sid INT, cid INT, year1 INT)

INSERT INTO car
VALUES (1, 'vento'), (2, 'vento'), (3, 'baleno'), (4, 'swift')
INSERT INTO sales
VALUES (1, 1, 2017), (2, 3, 2018), (3, 3, 2017), (5, 4, 2017)

--verify
--SELECT * FROM car
--SELECT * FROM sales

--1st query
SELECT sid, cid, year1, name1
FROM sales master
INNER JOIN car ON cid = id 

--2nd query
SELECT sid, cid, year1, name1
FROM sales
INNER JOIN car ON cid = id 

sql中没有称为主联接的概念

SELECT master.sid
    ,master.cid
    ,master.year1
    ,c.name1
FROM sales master
INNER JOIN car c ON master.cid = c.id --(1st)

SELECT s.sid
    ,s.cid
    ,s.year1
    ,c.name1
FROM sales s
INNER JOIN car c ON s.cid = c.id --(2nd)
上面的查询将master作为sales表的别名,并在sales表和car表之间进行内部联接 您可以使用别名(主)参考
cid
,如下所示:

SELECT 
sid, cid, year1, name1
FROM sales master
INNER JOIN car 
ON 
cid = id 

sql中没有称为主联接的概念

SELECT master.sid
    ,master.cid
    ,master.year1
    ,c.name1
FROM sales master
INNER JOIN car c ON master.cid = c.id --(1st)

SELECT s.sid
    ,s.cid
    ,s.year1
    ,c.name1
FROM sales s
INNER JOIN car c ON s.cid = c.id --(2nd)
上面的查询将master作为sales表的别名,并在sales表和car表之间进行内部联接 您可以使用别名(主)参考
cid
,如下所示:

SELECT 
sid, cid, year1, name1
FROM sales master
INNER JOIN car 
ON 
cid = id 

我认为
master
是表
sales
的别名。例如,您可以将
select*from sales作为m
select*from sales m
@Leran2002编写,您认为是吗?@philipxy是的,问题的第一个版本是“master join in sql”。后来编辑了它。看@Leran2002谢谢。但我不明白你评论的目的,也不明白第一个版本的意义。我想说的是,从代码中可以清楚地看出master是一个别名,所以“我认为”应该去掉&你不应该对“我认为”所暗示的任何疑问,尽管这不是字面意思。但也许你只是不确定。@philipxy好吧,我明白你的意思。:)你说得对,
think
这个词在那里是不必要的。我尽量不使用这样的表达式。我认为
master
是表
sales
的别名。例如,您可以将
select*from sales作为m
select*from sales m
@Leran2002编写,您认为是吗?@philipxy是的,问题的第一个版本是“master join in sql”。后来编辑了它。看@Leran2002谢谢。但我不明白你评论的目的,也不明白第一个版本的意义。我想说的是,从代码中可以清楚地看出master是一个别名,所以“我认为”应该去掉&你不应该对“我认为”所暗示的任何疑问,尽管这不是字面意思。但也许你只是不确定。@philipxy好吧,我明白你的意思。:)你说得对,
think
这个词在那里是不必要的。我尽量不使用这种表达方式。