Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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 JOIN不会为联接表返回任何列_Sql_Sql Server_Join - Fatal编程技术网

指定列时,SQL JOIN不会为联接表返回任何列

指定列时,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

我试图连接两个表,但是当我指定从第一个表返回哪些列时,我从连接表中没有得到任何列。如果我选择all“*”,那么连接就会发生,并从连接表中返回列

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”。