0

我正在尝试获取上值小于/等于给定值的 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...

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

4

3 回答 3

0

上的语法

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

在 MYSQL 上工作得很好?仔细检查拼写错误或语法错误?

于 2013-05-28T22:31:56.337 回答
0

我想我现在明白了 - 你想要最大值的 id Upper,只要它小于或等于你的“测试”值。那是对的吗?

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

于 2013-05-29T00:03:26.983 回答
0

如果您想在没有匹配项而不是“无行”的情况下返回 NULL,您可以尝试以下操作:

SELECT max(ID) 
FROM myTable
WHERE Upper<=3;
于 2013-05-28T23:16:16.493 回答