我有一个包含三列的表,可以表示如下:
|---|---|---|
| 1 | 2 | 3 |
|---|---|---|
| A | B | C |
| B | C | A |
| C | A | B |
还有一个二维数组,如下所示:
[
[A,B,C],
[C,A,B],
[B,A,C]
]
我想只选择表中与二维数组中的一行匹配的行。
显而易见的解决方案是遍历并进行 3 个查询,但我想知道是否有任何方法可以一次性完成SELECT
编辑:“循环方法”的工作示例。
SET LOG_ROWS = 0;
DECLARE LOCAL TEMPORARY TABLE MODULE.X(col1 char(1), col2 char(1), col3 char(1));
local array, i integer;
REDIM(array,3,3);
array[0,0] = 'A';
array[0,1] = 'B';
array[0,2] = 'C';
array[1,0] = 'C';
array[1,1] = 'A';
array[1,2] = 'B';
array[2,0] = 'B';
array[2,1] = 'A';
array[2,2] = 'C';
INSERT INTO MODULE.X VALUES('A','B','C');
INSERT INTO MODULE.X VALUES('B','C','A');
INSERT INTO MODULE.X VALUES('C','A','B');
FOR i = 0 TO UBound(array) DO
SELECT * FROM MODULE.X WHERE col1 = array[i,0] AND col2 = array[i,1] AND col3 = array[i,2];
END
结果:
col1 col2 col3
---- ---- ----
A B C
col1 col2 col3
---- ---- ----
C A B