引言
在上一篇文章中,我们介绍了 ABAP 的查询语句关键的三个部分:
SELECT result
部分FROM source
部分INTO target
部分
常见语法:
SELECT result FROM source INTO target [WHERE condition] [GROUP BY fields] [HAVING cond] [ORDER BY fileds].
并介绍了上述三个主体部分的使用方法,这篇文章我将来介绍后续能在 SELECT
操作的可选部分,并借此来帮助我们进行高效的查询。主要包括如下:
- WHERE 条件
- IN 操作符
- GROUP BY
- HAVING
- ORDER BY
- UP TO N ROWS
- FOR ALL ENTRIES
- 子查询
同时,从 SAP NetWeaver 7.5 开始,
UNION
方法可以用来在两个 SELECT 语句的结果集之间创建一个联合。
WHERE 条件
WHERE
条件后面跟随的是查询的限制条件。也是 SELECT
查询中最常被使用的条件,因为我们在实际情况中并非总是需要获取所有数据,所以需要有条件的进行查询。
WHERE
基本用法:选取某个字段的某个情况。比如我们从 sflight
表中选取 carrid
为 LH
的信息:
SELECT carrid connid FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_out WHERE carrid = 'LH'.
可以看到,这次查询只返回 carrid = LH
的结果集。
如果想使用多个条件,可以使用 AND
连接多个字段,如:
SELECT mandt carrid connid fldate FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_out WHERE carrid = 'LH' AND connid = '402'.
条件运算符
WHERE
可以使用的条件运算符很多:
EQ
(或=
号,即等于)NE
(或<>
号,即不等于)LT
(或<
号,即小于号)GT
(或>
号。即大于号)LE
(或<=
号,即小于等于)GE
(或>=
号,即大于等于)BETWEEN
(范围运算符)
比如使用与字段不相等的示例:
SELECT mandt carrid connid fldate FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_out WHERE carrid NE 'LH' AND connid <> '402'.
运行结果如下,不会存在 Airline = LH
和 Flight No. = 402
的结果:
范围运算符那 BETWEEN
举例:
SELECT mandt carrid connid fldate FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_out WHERE carrid BETWEEN 'DL' AND 'LH'.