我正在尝试连接2个表,但是当我指定从第一个表返回哪些列时,我从连接表中得不到任何列(根本没有)。如果我选择所有" *"然后连接发生,我从连接表返回列。
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_Item表和JOIN表。唯一的区别是我选择了所有列。
我只是不明白为什么会这样。有什么建议吗?
答案 0 :(得分:2)
如果您没有从表B中选择任何字段,那么它将不会在SELECT
语句中显示任何字段。
如果您愿意,可以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
个值。