SQLite3中的内连接

Posted

技术标签:

【中文标题】SQLite3中的内连接【英文标题】:Inner join in SQLite3 【发布时间】:2017-12-11 04:37:48 【问题描述】:

我正在尝试在 SQLite3 中执行内部联接,但它不起作用。我不断收到错误消息,表明 table2 中的字段名称不明确。

不胜感激任何关于原因的意见。

SELECT 
table1.id, table1.cd1, table1.cd2, table1.cd3, table1.cd4, table2.ab

FROM 
table1

INNER JOIN table2 ON table2.dx = table1.cd1 
INNER JOIN table2 ON table2.dx = table1.cd2
INNER JOIN table2 ON table2.dx = table1.cd3
INNER JOIN table2 ON table2.dx = table1.cd4

GROUP BY 1, 2, 3, 4, 5, 6

table2中的字段“dx”对应table1中的四个不同的字段:“cd1”、“cd2”、“cd3”、“cd4”。

【问题讨论】:

【参考方案1】:

您需要表别名:

SELECT t1.id, t1.cd1, t1.cd2, t1.cd3, t1.cd4, ?.ab
FROM table1 t1 JOIN
     table2 t21
     ON t21.dx = t1.cd1 JOIN
     table2 t22
     ON t22.dx = t1.cd2 JOIN
     table2 t23
     ON t23.dx = t1.cd3 JOIN
     table2 t24
     ON t24.dx = t1.cd4 
GROUP BY 1, 2, 3, 4, 5, 6;

我不知道ab应该来自哪个表,所以你需要填写。

【讨论】:

我在每次加入后为第二个表添加了别名并运行了脚本,没有错误消息,但我的输出文件中也没有结果。 @Harelephant 。 . .然后连接不匹配。不考虑不匹配的数据。您可以尝试改用left join @Harelephant 请提供一些示例数据和您想要的输出。 (请参阅How to format SQL tables in a Stack Overflow post? 了解如何添加。)

以上是关于SQLite3中的内连接的主要内容,如果未能解决你的问题,请参考以下文章

选择连接SQL语句中的内连接和where之间的区别[重复]

sql server 2005 中的内连接和外连接 怎么理解?

MySQL中的内连接左连接右连接全连接交叉连接

sql中的内连接使用问题

26.MySQL中的内连接INNER JOIN

08_MySQL DQL(SQL99标准)_多表连接查询中的内连接