我在SQLite文件中有2个表,其组织如下:
要列出节点及其项目,我只需要进行简单的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列。
如何在不必为每列创建一个子查询的情况下实现此目的?
答案 0 :(得分:1)
尝试删除subQuery中的where子句,同时LIMIT并使用min
添加group bySELECT tNode.node, ..., tItem2.itemName, tItem2.itemPriority
FROM tNode
LEFT JOIN
(SELECT itemName,min(itemPriority) as min_priority FROM tItem GROUP BY tItem.node)
AS tItem2 ON tItem2.node=tNode.node
ORDER BY tNode.node