如何在 SQL 中循环访问整数数组



我有 3 个 SQL 表:

  • 第一个:包含代码 [1 .. 22],每个代码代表一个值。此列表始终是固定的(没有更改( - 我将调用列 Code1
  • 第二个还包含代码,每次我们使用一组代码,每个代码代表一个值 - 我将调用列 Code2
  • 第三个表有 2 列 (2 FK(代码 1|来自前面表的代码 2

我的问题是我想始终遍历第一个表中 Code1 列的所有值(无论我有多少代码(,并且对于第二个表中 Code2 列的特定/特定值,假设 [30.. 55]。我想将代码 1 和代码 2 插入到第三个表中。

例:

Table 1
Code1|Descript
1|A
2|B
3|C
Table 2
Code2|Descript
1|AA
2|BB
3|CC
4|DD
5|EE

我想在我的第三个表中插入以下值

Table 3
Code1|Code2
1|2
1|3
1|4
2|2
2|3
2|4
3|2
3|3
3|4

基本上循环遍历表 1 中的每个值和表 2 中的特定值(在我的示例中 [2,3, 4](,我进行了插入查询

执行这些插入查询而无需为每个条目创建插入查询的最佳方法是什么?

我的解决方案如下所示:

INSERT INTO T3 
SELECT T1.Code1, T2.Code2
FROM T1 CROSS JOIN (
SELECT Code2
FROM T2
WHERE Code2 BETWEEN x and y)T2

谢谢

INSERT INTO TABLE3 (code1, code2) 
SELECT 
T1.Code1, T2.Code2 
FROM Table1 T1 JOIN Table2 T2
ON T2.code2 IN(2,3,4)

我们交叉连接两个表的 INSERT 语句(在您要的第二个表中选择范围(应该可以在这里解决问题:

INSERT INTO table3
SELECT table1.code1, table2.code2
FROM table1, table2
WHERE table2.code2 BETWEEN 2 and 4

如果您不希望重复项table3如果关系已经存在,那么您可以执行以下操作:

INSERT INTO table3
SELECT table1.code1, table2.code2
FROM table1, table2
WHERE table2.code2 BETWEEN 2 and 4
AND (table1.code1, table2.code2) NOT IN (SELECT code1, code2 FROM table3)

我认为查询需要交叉连接,因为您需要第一个表中的所有行与第二个表中的某些行配对

INSERT INTO TABLE3 (code1, code2) 
SELECT 
T1.Code1, T2.Code2 
FROM Table1 T1 CROSS JOIN Table2 T2
ON T2.code2 IN(2,3,4)

最新更新