mysql - 使用 JOIN 时获取最小数据 id

标签 mysql sql join

我的表结构如下 enter image description here

我的查询如下

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')

演示链接:

http://sqlfiddle.com/#!9/29e8d8/59

关于mysql - 使用 JOIN 时获取最小数据 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49895815/

相关文章:

mysql - 使用docker-compose无法在同一网络中连接mysql和spring boot

MySQL 5.7.26 奇怪的问题...无法将日期时间设置为 : 2020-03-21 00:00:00

sql - 从数据库中检索 Null

database - JPA - 左连接 2 个没有关联的表

PHP 去除非整数并将输出重新格式化为电话号码

mysql - 解析服务器-导入mysql数据

php - 如何转义\in mysql查询

mysql - 防止重复条目复合索引

sql - T-SQL 选择连接 3 个表

MySQL:将分组数据连接到表 - 仅连接第一行