Sql 内部联接子句不返回行,而自然联接不返回行

Sql 内部联接子句不返回行,而自然联接不返回行,sql,sqlite,inner-join,quotation-marks,Sql,Sqlite,Inner Join,Quotation Marks,我一直在做一个简单的SQLite连接 我有两个表,一个是数据表,另一个是指针表: References包含ReferenceID和Reference REL\u References\u页面包含ReferenceID和PageID 正常联接查询工作正常并返回良好结果: 但是如果我尝试进行显式连接,结果将不会出错,但不会返回任何结果。卡在on条款上的位置: SELECT Reference FROM "References" JOIN REL_References_Pages ON "REL

我一直在做一个简单的SQLite连接

我有两个表,一个是数据表,另一个是指针表:

  • References
    包含
    ReferenceID
    Reference
  • REL\u References\u页面
    包含
    ReferenceID
    PageID
正常联接查询工作正常并返回良好结果:

但是如果我尝试进行显式连接,结果将不会出错,但不会返回任何结果。卡在on条款上的位置:

SELECT Reference
FROM "References" 
JOIN REL_References_Pages ON "REL_References_Pages.ReferenceID" = "References.ReferenceID"
WHERE PageID = 6
有什么想法吗

我可以使用自然连接,但我想知道为什么普通连接不起作用


另外,表
引用的名称很愚蠢,但事实就是这样。

我认为您得到空输出(无行)的原因是,在on子句中,您试图比较两个不相等的字符串,因此返回
false

简单地说,下面的命令将产生
false
boolean输出:

SELECT "REL_References_Pages.ReferenceID" = "References.ReferenceID"
尝试在整个
表的周围不加引号。列
在不需要的地方构造。在您的情况下,只有
引用
表最初封装在数据模型中。至少我这么认为

SELECT Reference
FROM "References" 
JOIN REL_References_Pages
  ON REL_References_Pages.ReferenceID = "References".ReferenceID
WHERE PageID = 6
或者更好地使用别名:

SELECT Reference
FROM "References" AS r 
JOIN REL_References_Pages AS rp
  ON r.ReferenceID = rp.ReferenceID
WHERE PageID = 6
您还可以通过使用
表达式应用
来缩短代码,因为两个表中的列名完全相同,并且根本不需要在查询中以这种方式为表分配别名:

SELECT Reference
FROM "References"
JOIN REL_References_Pages USING ( ReferenceID )
WHERE PageID = 6

谢谢。我认为TableName.Column结构是单片的。将qotes放在“引用”中。引用ID修复了所有问题。谢谢你的另外两条评论。我以前确实尝试过,但由于选择不正确,我不知道问题出在哪里。我已经添加了一个解释,说明在运行查询时实际发生了什么。非常感谢。我花了好几个小时试图弄明白这一点。
“REL\u References\u Pages.ReferenceID”
应该是
“REL\u References\u Pages”。“ReferenceID”
SELECT Reference
FROM "References"
JOIN REL_References_Pages USING ( ReferenceID )
WHERE PageID = 6