MySQL获得某个用户的最低ID-或-每行紧急度最高的条目的ID

如何解决MySQL获得某个用户的最低ID-或-每行紧急度最高的条目的ID

我有以下数据库
id | user | urgency | problem          | solved
那里的信息有不同的用户,但是这些用户都有多个条目
1  | marco | 0      | MysqL problem    | n
2  | marco | 0      | Email problem    | n
3  | eddy  | 0      | Email problem    | n 
4  | eddy  | 1      | MTV doesn\'t work | n
5  | frank | 0      | out of coffee    | y
我想做的是:通常我会先检查每个人的最老的问题。我使用此查询获取最早的问题的ID。
select min(id) from db group by user
这列出了最早的问题ID。但是我希望人们能够使某些问题更加紧急。我想要每个用户的紧急程度最高的ID,或紧急程度最高的问题的ID 获取最大紧急程度不会给出问题的ID,而是最大紧急程度。 要明确:我想得到这个结果
row  |   id
0    |   1
1    |   4
自从解决后,最后一个条目应该出现在结果中

解决方法

Select ...
From SomeTable As T
    Join    (
            Select T1.User,Min( T1.Id ) As Id
            From SomeTable As T1
                Join    (
                        Select T2.User,Max( T2.Urgency ) As Urgency
                        From SomeTable As T2
                        Where T2.Solved = \'n\'
                        Group By T2.User
                        ) As MaxUrgency
                    On MaxUrgency.User = T1.User
                        And MaxUrgency.Urgency = T1.Urgency
            Where T1.Solved = \'n\'
            Group By T1.User
            ) As Z
        On Z.User = T.User
                And Z.Id = T.Id
,有很多深奥的方法可以做到这一点,但这是更清晰的方法之一。 首先建立查询,获取您的最小编号和最大紧急度:
SELECT 
    user,MIN(id) AS min_id,MAX(urgency) AS max_urgency
FROM
    db
GROUP BY
    user
然后将其作为逻辑表并入 更大的查询您的答案:
SELECT 
    user,min_id,max_urgency,(    SELECT MIN(id) FROM db
         WHERE user = a.user
             AND urgency = a.max_urgency
    ) AS max_urgency_min_id
FROM
(
    SELECT 
        user,MAX(urgency) AS max_urgency
    FROM
        db
    GROUP BY
        user
) AS a
给定明显的索引,这应该非常有效。,以下内容将使您准确返回单行–表中最紧急,最古老的问题。
select id from my_table where id = (
    select min(id) from my_table where urgency = (
        select max(urgency) from my_table
    )
)
我将建议向您的表中添加一个create_date列,这样您就可以针对相同紧急度的那些问题首先获得最早的问题。但我现在假设您为此目的使用了最低的ID。 但是现在我看到您想要其中的一个列表。为此,您可以按ID对结果进行排序:
select id from my_table where urgency = (
    select max(urgency) from my_table
) order by id;
[编辑:省略订单!] 老实说,我忘记了如何获取行号。互联网上的某人提出了类似的建议,但不知道是否可行:
select @rownum:=@rownum+1 ‘row\',id from my_table where ...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?