Mysql 如何从1字段为最大值或最小值的表中选择行?

Mysql 如何从1字段为最大值或最小值的表中选择行?,mysql,Mysql,在我的表中,我有一个字段名rt_stars,其中包括1到5之间的整数。假设有5行的rt_星分别为4,4,3,2,1。这里,4是最高的,1是最低的。如果我想选择最大值为4的行,我该怎么做?因为这里有两个4,所以将选择最后一个。我能问一下这样的问题吗 SELECT * FROM ratings WHERE MAX(rt_stars) ORDER BY rt_id DESC LIMIT 1 我知道这是错误的,但如果rt_stars字段中有最大值,我希望从行中选择所有值。如何实现这种查询?我认为下面的

在我的表中,我有一个字段名rt_stars,其中包括1到5之间的整数。假设有5行的rt_星分别为4,4,3,2,1。这里,4是最高的,1是最低的。如果我想选择最大值为4的行,我该怎么做?因为这里有两个4,所以将选择最后一个。我能问一下这样的问题吗

SELECT * FROM ratings WHERE MAX(rt_stars) ORDER BY rt_id DESC LIMIT 1

我知道这是错误的,但如果rt_stars字段中有最大值,我希望从行中选择所有值。如何实现这种查询?

我认为下面的SQL代码会有所帮助

SELECT * FROM ratings WHERE rt_stars = MAX(rt_stars) ORDER BY rt_id DESC;
对不起,下面的代码被修改了

SELECT * FROM ratings WHERE rt_stars = ( SELECT MAX( user_05_pk ) FROM ratings )
 ORDER BY rt_id DESC;

您可以使用以下命令选择一行:

select r.*
from ratings r
order by rt_stars desc, rt_id desc
limit 1;

查询的问题是不能在where子句中使用max。除此之外,您根本不需要聚合—只需对行进行排序,然后选择第一行即可。

如果您希望所有行都具有最大星星数,可以执行以下操作:

select *
from ratings
where rt_stars = (select max(rt_stars) from ratings)
select *
from ratings
order by rt_stars desc
limit 1
如果您只是随机想要其中一个,您可以:

select *
from ratings
where rt_stars = (select max(rt_stars) from ratings)
select *
from ratings
order by rt_stars desc
limit 1

你如何区分这两个有4;哪一个是最新的?日期时间字段?自动增量ID字段?自动增量。。。rt_id是自动递增的…我认为您不需要使用MAX。。相反,您只需按rt_stars DESC、rt_id DESC和LIMIT 1订购,即可使用多个值进行订购??是的,当然可以。。请参见@Gordon的答案不幸的是,否。它返回查询错误:错误:ER_无效的组函数使用:组函数的无效使用我认为更简单的版本应该是从rt_stars DESC的评级顺序中选择*,rt_id DESC LIMIT 1您的答案很完美,但让我们保持简单: