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