SQL选择条件
我有一张像下面这样的桌子SQL选择条件,sql,Sql,我有一张像下面这样的桌子 ID | Amt ------- 1 | $30 2 | $2 3 | $50 我想根据ID对金额进行选择,问题是ID=1不能保证存在。因此,我想检查ID=1是否存在,然后选择ID=1对应的金额,否则我想选择ID=2的金额 比如说 Select (If ID= 1 then amt else amt(for ID2) from Table 如何实现此Sql select语句 谢谢。 如果1和2不存在怎么办?如果总是要转到下一个id,则应选择按id排序的第一个
ID | Amt
-------
1 | $30
2 | $2
3 | $50
我想根据ID对金额进行选择,问题是ID=1不能保证存在。因此,我想检查ID=1是否存在,然后选择ID=1对应的金额,否则我想选择ID=2的金额
比如说
Select (If ID= 1 then amt else amt(for ID2) from Table
如何实现此Sql select语句
谢谢。
如果1和2不存在怎么办?如果总是要转到下一个id,则应选择按id排序的第一个项目
select top 1 amt from table order by id;
这句话的语法可能有点不对劲…我现在正在两个dbs之间切换…
选择金额
从表格
我在哪里
选择minID
从表格
其中ID<3
根据您的问题,可能有更好的方法。。。不知道更多,这是我的答案: MSSQL:
select top 1 * from myTable where ID >= 1 order by ID
MySQL:
select * from myTable where ID >= 1 order by ID limit 1
这是甲骨文特有的答案 目前还不清楚您想要的解决方案有多普遍 对于硬编码值1和2:
select amt from (
select amt from table where id between 1 and 2 order by id asc
) where rownum =1
将1和2替换为n和n+1,以概括任何起始值n
如果您真的想找到比您传入的ID大的最低现有ID,请删除2的上限,不管它有多高。您可能想使用EXISTS stament并创建一个函数
如果数据库是SQL Server,则可以通过案例状态实现这一点
看起来您想要ID最低的记录 对于MySQL、SQLite、PostgreSQL的使用限制
select amt from tbl order by id limit 1;
对于SQL Server,Sybase使用top
select top 1 amt from tbl order by id;
对于Oracle,请使用rownum
SELECT * FROM (select amt from tbl order by id) X WHERE ROWNUM=1;
对于ANSI SQL92方法
SELECT AMT FROM TBL WHERE ID = (SELECT MIN(ID) FROM TBL)
最佳答案可能取决于您使用的RDBMS。如果您只需要最小的id…只需从where子句中删除where id<3,它将返回最小的id。
SELECT AMT FROM TBL WHERE ID = (SELECT MIN(ID) FROM TBL)