Mysql 把未解决的问题找回来。我不知道在这个查询中把“where solved='n'”放在哪里。@patrick-我想你需要在最里面的两个级别上使用这个过滤器。您需要在最内部的连接中使用它,否则您可能会发现解决的问题是最紧迫的。您需要在下一个最内部的连接处使用它

Mysql 把未解决的问题找回来。我不知道在这个查询中把“where solved='n'”放在哪里。@patrick-我想你需要在最里面的两个级别上使用这个过滤器。您需要在最内部的连接中使用它,否则您可能会发现解决的问题是最紧迫的。您需要在下一个最内部的连接处使用它,mysql,Mysql,把未解决的问题找回来。我不知道在这个查询中把“where solved='n'”放在哪里。@patrick-我想你需要在最里面的两个级别上使用这个过滤器。您需要在最内部的连接中使用它,否则您可能会发现解决的问题是最紧迫的。您需要在下一个最内部的连接处使用它,因为您可以解决给定用户的最低id。然而,在最外层的表上,因为我们是在Id上加入的,所以不需要它。对于每个用户来说,紧迫性是独一无二的。一个用户只能对一个问题进行优先级排序,该问题将使丑1高于该用户的最高紧急程度。问题解决后,紧急度设置回0。因


把未解决的问题找回来。我不知道在这个查询中把“where solved='n'”放在哪里。@patrick-我想你需要在最里面的两个级别上使用这个过滤器。您需要在最内部的连接中使用它,否则您可能会发现解决的问题是最紧迫的。您需要在下一个最内部的连接处使用它,因为您可以解决给定用户的最低id。然而,在最外层的表上,因为我们是在Id上加入的,所以不需要它。对于每个用户来说,紧迫性是独一无二的。一个用户只能对一个问题进行优先级排序,该问题将使丑1高于该用户的最高紧急程度。问题解决后,紧急度设置回0。因此,对于同一个用户,不会有两个同样紧急的问题的风险…@patrick-这是一条关于模式的有用信息,您应该在OP中提及。这条规则是在数据库级别还是应用程序级别强制执行的?如果是后者,那么您仍然应该假设您可能会得到违反该规则的坏数据。不管怎样,我提供的解决方案将起作用,无论该规则是否被强制执行。@Thomas我知道我在这个线程上迟到了,但我有一个类似的问题,我正试图在一个更大的联接操作中解决。要解决最初的问题,可以省略最外层的join操作,只返回min(T1.Id)。此外,如果T.Id是唯一的,则Z.User=T.User是冗余的。。。当然,如果他需要行的实际完整数据,那么外部联接是有用的。
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
select min(id) from db group by user
row  |   id
0    |   1
1    |   4
select id from my_table where id = (
    select min(id) from my_table where urgency = (
        select max(urgency) from my_table
    )
)
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 ...
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,
        MIN(id) AS min_id, 
        MAX(urgency) AS max_urgency
    FROM
        db
    GROUP BY
        user
) AS a
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