我的查询如下
SELECT *,MIN(node.rnode) AS minRnode
FROM final_mlm AS node,
final_mlm AS parent
where node.lnode BETWEEN parent.lnode AND parent.rnode AND parent.id = 1
AND node.placement='l'
这个查询工作得很好,但我的要求是我需要一个具有 minRnode
的 id,如输出中的查询中给出的那样。
我尝试过的
SELECT *, MIN(node.rnode) as minn
FROM (
SELECT * FROM final_mlm AS node,
final_mlm AS parent
where node.lnode BETWEEN parent.lnode AND parent.rnode
AND parent.id = 4
AND node.placement='l'
) as t on t.rnode=node.minn
但这可能会返回一个错误,因为 id 重复。
这是我的 live code 在 Sql Fiddle 中。
我的第一个沃金查询的输出是
id sponserid level lnode rnode placement id sponserid level lnode rnode placement minRnode
3 2 2 21 22 l 1 0 0 1 24 6
因此,根据此输出,我需要来自具有 minRnode(Monimum Rnode) = 6 的表的 id
最佳答案
以下是您的问题的解决方案:
SELECT id
FROM final_mlm
WHERE rnode IN (SELECT MIN(node.rnode)
FROM final_mlm AS node
INNER JOIN final_mlm AS parent
ON node.lnode BETWEEN parent.lnode AND parent.rnode
WHERE parent.id = 1
AND node.placement='l')
演示链接:
关于mysql - 使用 JOIN 时获取最小数据 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49895815/