gpt4 book ai didi

定义表列时 SQL 连接停止工作

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:31 24 4
gpt4 key购买 nike

我正在使用 sql 在 Excel 中创建自定义 ODBC 查询。

我有 2 个表“TBL_CONTACT”和“TBL_ADDRESS”,我想在“contactid”上进行 INNER JOIN,这是两个表中都存在的列。

如果我选择所有列,这工作正常,但如果我开始定义我想显示的列,它就会停止工作。

工作代码:

SELECT * FROM "TBL_CONTACT" AS CONTACT

INNER JOIN (SELECT * FROM "TBL_ADDRESS" AS ADDRESS) ADDRESS
ON CONTACT.contactid = ADDRESS.contactid

非工作代码:

SELECT CONTACT.contactid, CONTACT.fullname FROM "TBL_CONTACT" AS CONTACT

INNER JOIN (SELECT * FROM "TBL_ADDRESS" AS ADDRESS) ADDRESS
ON CONTACT.contactid = ADDRESS.contactid

这仅显示“TBL_CONTACT”中的“contactid”和“fullname”列,不会加入“TBL_ADDRESS”中的任何内容。

示例:

TBL_CONTACT
contactid firstname fullname
1001 John John Smith
1002 Tom Tom Adams

TBL_ADDRESS
contactid line1 line2 postcode
1001 3 Farm Ln Essex AB1 1BA
1002 1 Tim st Kent CN2 2NC

期望的结果:

contactid   fullname     contactid2  line1       line2    postcode
1001 John Smith 1001 3 Farm Ln Essex AB1 1BA
1002 Tom Adams 1002 1 Tim st Kent CN2 2NC

第一个代码给出以下结果:

contactid   firstname    fullname     contactid2  line1       line2    postcode
1001 John John Smith 1001 3 Farm Ln Essex AB1 1BA
1002 Tom Tom Adams 1002 1 Tim st Kent CN2 2NC

第二个代码给出以下结果:

contactid   fullname
1001 John Smith
1002 Tom Adams

我是 SQL 的新手,但我不确定我做错了什么。任何帮助将不胜感激!

最佳答案

加入表格会导致列可供您选择。当您选择所有列时(使用 * 就像在您的第一个代码片段中一样),您连接表的列也将被选中。但是,当手动选择列时,您还必须定义要从联接表中选择哪些列。

假设您想要表 TBL_CONTACT 中的 contactidfullname 两列以及连接表 TBL_ADDRESS 中的所有列:

SELECT `TBL_CONTACT`.`contactid`, `TBL_CONTACT`.`fullname`, `TBL_ADDRESS`.* FROM TBL_CONTACT 
INNER JOIN TBL_ADDRESS
ON `TBL_CONTACT`.`contactid` = `TBL_ADDRESS`.`contactid`

反引号是可选的。

或者,您也可以为连接表指定列。

关于定义表列时 SQL 连接停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38741486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com