指定列时,SQL JOIN不会为联接表返回任何列
我试图连接两个表,但是当我指定从第一个表返回哪些列时,我从连接表中没有得到任何列。如果我选择all“*”,那么连接就会发生,并从连接表中返回列指定列时,SQL JOIN不会为联接表返回任何列,sql,sql-server,join,Sql,Sql Server,Join,我试图连接两个表,但是当我指定从第一个表返回哪些列时,我从连接表中没有得到任何列。如果我选择all“*”,那么连接就会发生,并从连接表中返回列 SELECT E.ItemCode, E.ExtendedDescriptionKey FROM CI_Item As E LEFT JOIN CI_ExtendedDescription AS B ON B.ExtendedDescriptionKey = E.ExtendedDescriptionKey 如上所述,我只收到E的两列(ItemC
SELECT E.ItemCode, E.ExtendedDescriptionKey
FROM CI_Item As E
LEFT JOIN CI_ExtendedDescription AS B
ON B.ExtendedDescriptionKey = E.ExtendedDescriptionKey
如上所述,我只收到E的两列(ItemCode和ExtendedDescriptionKey)
现在,如果我没有从第一个表中指定列,而是选择all:
SELECT *
FROM CI_Item As E
LEFT JOIN CI_ExtendedDescription AS B
ON B.ExtendedDescriptionKey = E.ExtendedDescriptionKey
我收到整个CI_项表和联接表。唯一的区别是我选择了所有列
我只是不明白为什么会这样。有什么建议吗?如果您没有从表B中选择任何字段,那么它将不会在
select
语句中显示任何字段
如果愿意,您可以使用一个表的别名选择*
SELECT E.*
FROM CI_Item As E
LEFT JOIN CI_ExtendedDescription AS B
ON B.ExtendedDescriptionKey = E.ExtendedDescriptionKey
这将返回除表E之外的所有字段,然后您可以从表B中指定所需的任何字段
SELECT
E.*
,B.Field1
.B.Field2
FROM CI_Item As E
LEFT JOIN CI_ExtendedDescription AS B
ON B.ExtendedDescriptionKey = E.ExtendedDescriptionKey
当然,如果没有匹配的数据,那么表B中的列中会有
NULL
值。我不理解这个问题,如果不选择列,您希望如何获得列?好吧,您得到了您想要的。不多不少。将所需的列放在SELECT
子句中。这是用于哪个RDBMS的?请添加一个标记来指定您是在使用mysql
、postgresql
、sqlserver
、oracle
还是db2
——还是完全其他什么。啊,这很有意义。我认为SELECT语句构成了“E”。