SELECT语句测试最大值

时间:2013-05-28 22:23:25

标签: mysql select max

我正在尝试获取Upper值小于/等于给定值的ID。

myTable
(`ID`, `Lower`, `Upper`)
(1, 1, 9),
(2, 10, 49),
(3, 50, 99),
(4, 100, 499),
(5, 500, 999),
(6, 1000, 4999),
(7, 5000, 9999);

我试过了:

SELECT ID 
FROM myTable
WHERE Lower>=3 AND Upper<=3;

SELECT ID 
FROM myTable
WHERE Upper<=3
ORDER BY ID DESC;

SELECT ID 
FROM myTable 
GROUP BY ID HAVING MAX(Upper)<=3 
ORDER BY MAX(Upper);

SELECT *
FROM   myTable t1
WHERE  t1.Upper <= (
      SELECT (MAX(t2.Upper))
      FROM   myTable t2
  );

所有这些都返回空行。

选项:

SELECT ID 
FROM myTable
WHERE Upper<=10
ORDER BY ID DESC;

适用于测试值大于9 ...

的情况

任何人都可以提出可行的解决方案吗?

3 个答案:

答案 0 :(得分:0)

上的语法
 SELECT ID 
 FROM myTable
 WHERE Upper<=3
 ORDER BY ID DESC;

在MYSQL上运行得很好吗?仔细检查拼写错误或语法错误?

答案 1 :(得分:0)

如果你想在没有匹配而不是“没有行”的情况下返回NULL,你可以尝试类似的东西:

SELECT max(ID) 
FROM myTable
WHERE Upper<=3;

答案 2 :(得分:0)

我想我现在得到它 - 你想要最大Upper值的id,只要它小于或等于你的“test”值。这是对的吗?

select id
from myTable
where Upper <= X
order by Upper desc
LIMIT 1;

因此,如果X = 9,您将获得ID: 1

如果X = 10,您还可以获得ID: 1

如果X = 163,您将获得ID: 3