我有一个包含三列的表,可以表示如下:
|---|---|---|
| 1 | 2 | 3 |
|---|---|---|
| A | B | C |
| B | C | A |
| C | A | B |
和2D阵列,像这样:
[
[A,B,C],
[C,A,B],
[B,A,C]
]
我想只选择表格中与2D数组中某一行匹配的行。
显而易见的解决方案是遍历并进行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