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