我正在尝试获取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 ...
的情况任何人都可以提出可行的解决方案吗?
答案 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