DB2多主键表特定条件单条数据查询SQL编写咨询
DB2 查询任意一条符合条件的记录
需求背景
我有一张DB2表,ID和ANUMBER是联合主键,表中数据如下:
| ID (PK) | ANUMBER (PK) | NAME | OPTION |
|---|---|---|---|
| 1 | 1 | A | true |
| 1 | 2 | B | true |
| 1 | 3 | C | false |
| 2 | 1 | AA | true |
需要写一条SELECT语句,固定ID值、筛选OPTION为true的记录,返回其中任意一条即可。
实现语句
方法一:返回检索到的第一条符合条件的记录
这种写法会返回数据库最先找到的符合条件的记录(通常和联合主键的存储顺序一致):
SELECT ID, ANUMBER, NAME, OPTION FROM 你的表名 WHERE ID = 1 -- 替换为你需要的固定ID值 AND OPTION = true FETCH FIRST 1 ROW ONLY;
方法二:随机返回一条符合条件的记录
如果需要随机获取一条,可以加上随机排序:
SELECT ID, ANUMBER, NAME, OPTION FROM 你的表名 WHERE ID = 1 AND OPTION = true ORDER BY RAND() FETCH FIRST 1 ROW ONLY;
补充说明
FETCH FIRST 1 ROW ONLY是DB2官方推荐的限制返回行数的语法,部分版本也支持LIMIT 1,但前者兼容性更好。- 不指定
ORDER BY时,返回结果的顺序由数据库的存储和检索逻辑决定,是不可控的,但满足"任意一条"的需求;如果需要可控的固定一条,可以指定ORDER BY ANUMBER之类的排序规则,再取第一条。
内容的提问来源于stack exchange,提问作者DB2fan
相关产品推荐
相关产品推荐

