我在 APP 表格中有一行,记录为
Version :1.1.120 ,category :Home , app:iphone
现在,如果用户发送的输入版本为1.1.130,则希望返回版本1.1.120的行详细信息,但是对于1.1.115(小于DB中的版本),不会返回任何行。
此外,如果还有一条详细信息为
的附加记录Version :1.1.140 ,category :Books, app:iphone
现在,如果输入版本是1.1.145,我想运行这两行。选择版本作为输入的sql(服务器中存在的工作)工作,但上面的场景不起作用。
感谢。
答案 0 :(得分:1)
你只是在寻找比这种情况更低的价格:
SELECT *
FROM app
where version < '1.1.125';
SELECT *
FROM app
where version < '1.1.145';
答案 1 :(得分:1)
根据您的规格,如果记录大于最大值,则显示当前版本和先前版本,否则显示的版本不低于提供的输入(升级)。
显示升级版本
SELECT * FROM app
WHERE
CASE WHEN '1.1.120' > (SELECT MAX(version) FROM app)
THEN version <= '1.1.120'
ELSE version >= '1.1.120'
END
ORDER BY version DESC;
显示所有以前的版本
SELECT * FROM app
WHERE
CASE WHEN '1.1.145' > (SELECT MAX(version) FROM app)
THEN version <= '1.1.145'
ELSE version >= '1.1.145'
END
ORDER BY version DESC;
http://sqlfiddle.com/#!9/e26ad/3
我可以过滤这个以仅显示最近的升级而不是所有升级,但如果有多个记录大于提供的版本,则不清楚您要查找的是什么。