先设置一个简单的场景:
存在三个标题块,Test1 的备注(memo)中存着 Test2 的 ID,Test2 的备注中存着 Test3 的 ID。现在提供 Test1 的 ID,想通过关联,用 SQL 把 Test1、Test2、Test3 的 content 都显示出来。
只使用一个 LEFT JOIN,没问题
如果使用一个 LEFT JOIN 链接 Test1 和 Test2,再嵌套一个搜索显示 Test3 是没问题的。
SELECT
Block1.content AS content1,
Block2.content AS content2,
(SELECT content FROM blocks WHERE id = Block2.memo) AS content3
FROM (
SELECT
memo,
content
FROM blocks
WHERE id = '20250312162657-u184k20'
) AS Block1
LEFT JOIN (
SELECT id, content, memo
FROM blocks
) AS Block2 ON Block2.id = Block1.memo
使用两个 LEFT JOIN,就会报错
现在为了工整,像把 Test2 到 Test3 的嵌套搜索也改为用 LEFT JOIN 连接,此时就会报错。
SELECT
Block1.content AS content1,
Block2.content AS content2,
Block3.content AS content3
FROM (
SELECT
memo,
content
FROM blocks
WHERE id = '20250312162657-u184k20'
) AS Block1
LEFT JOIN (
SELECT id, content, memo
FROM blocks
) AS Block2 ON Block2.id = Block1.memo
LEFT JOIN (
SELECT id, content
FROM blocks
) AS Block3 ON Block3.id = Block2.memo;
报错信息为:near "ON":syntax error,应该是语法上的错误
是什么原因呢?