SQL 部分交叉连接 table
SQL cross join with partial table
我正在努力使以下 SQL 查询正常工作:
sql_query = f'''
INSERT INTO table3(animal_id, fruit_id)
SELECT table1.id, table2.id
FROM table1
CROSS JOIN table2
WHERE table2.id = "{some_value}";
'''
基本上我想附加到 table3 来自 table 1 和 table 2 的某些列的交叉连接,但要限制来自 table 的连接值2 到那些 table2.id 等于某个特定值的行。有谁知道我在这里做错了什么?
编辑:
所以说你有以下三个 tables:
1
ID ANIMAL
1 Cat
2 Dog
2
ID FRUIT
1 apple
2 orange
3 banana
3
ID ANIMAL FRUIT
1 Bird mango
2 Bird grape
如何交叉连接 tables 1 和 2 的动物和水果列并将结果附加到 table 3 但仅适用于 [=28= 的那些行] 1 等于大括号中指定的值,例如这里 'Dog'
3
ID ANIMAL FRUIT
1 Bird mango
2 Bird grape
3 Dog apple
4 Dog orange
5 Dog banana
如果您对传递的参数使用单引号而不是双引号,您的代码应该可以工作,但如果您确定 table2
包含该参数,则不需要 CROSS
连接.
您可以将代码简化为:
INSERT INTO table3 (ANIMAL, FRUIT)
SELECT ANIMAL, 'Dog'
FROM table1;
参见demo。
我正在努力使以下 SQL 查询正常工作:
sql_query = f'''
INSERT INTO table3(animal_id, fruit_id)
SELECT table1.id, table2.id
FROM table1
CROSS JOIN table2
WHERE table2.id = "{some_value}";
'''
基本上我想附加到 table3 来自 table 1 和 table 2 的某些列的交叉连接,但要限制来自 table 的连接值2 到那些 table2.id 等于某个特定值的行。有谁知道我在这里做错了什么?
编辑: 所以说你有以下三个 tables:
1
ID ANIMAL
1 Cat
2 Dog
2
ID FRUIT
1 apple
2 orange
3 banana
3
ID ANIMAL FRUIT
1 Bird mango
2 Bird grape
如何交叉连接 tables 1 和 2 的动物和水果列并将结果附加到 table 3 但仅适用于 [=28= 的那些行] 1 等于大括号中指定的值,例如这里 'Dog'
3
ID ANIMAL FRUIT
1 Bird mango
2 Bird grape
3 Dog apple
4 Dog orange
5 Dog banana
如果您对传递的参数使用单引号而不是双引号,您的代码应该可以工作,但如果您确定 table2
包含该参数,则不需要 CROSS
连接.
您可以将代码简化为:
INSERT INTO table3 (ANIMAL, FRUIT)
SELECT ANIMAL, 'Dog'
FROM table1;
参见demo。