我在 SQLite 文件中有 2 个表,其组织方式如下:
- 包含节点名称的tNode
- tItem包含名称、优先级和对其父节点的引用。一个节点可以有多个项目。
要列出节点及其项目,我只需要进行一个简单的 JOIN 查询:
SELECT tNode.node, ..., tItem.itemName, tItem.itemPriority, ...
FROM tNode
LEFT JOIN tItem ON tItem.node=tNode.node
ORDER BY tNode.node
但现在我想要包含该项目的节点列表,无论其优先级如何(列表中没有任何重复节点)。我想我可以使用以下查询:
SELECT tNode.node, ..., tItem2.itemName, tItem2.itemPriority, ...
FROM tNode
LEFT JOIN
(SELECT itemName,itemPriority FROM tItem WHERE tItem.node=tNode.node LIMIT 1)
AS tItem2 ON tItem2.node=tNode.node
ORDER BY tNode.node
但这不起作用(“没有这样的列:tNode.node”)。看来我不能在子查询中使用 tNode.node 列。
如何在不必为每列创建一个子查询的情况下实现这一目标?