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)