MYSQL:使用来自两个子查询的数据创建插入

MYSQL:使用来自两个子查询的数据创建插入,mysql,sql,Mysql,Sql,我知道在从数据库中选择行之后,可以使用子查询进行插入 INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id, term_order) SELECT ID, 8363, 0 FROM ( SELECT DISTINCT wp_43_posts.ID FROM wp_43_posts INNER JOIN wp_43_term_relationships ON wp_43_term_relationships.object

我知道在从数据库中选择行之后,可以使用子查询进行插入

INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT ID, 8363, 0 FROM
( SELECT DISTINCT
wp_43_posts.ID
FROM
wp_43_posts
INNER JOIN wp_43_term_relationships ON wp_43_term_relationships.object_id = wp_43_posts.ID
INNER JOIN wp_43_term_taxonomy ON wp_43_term_taxonomy.term_taxonomy_id = wp_43_term_relationships.term_taxonomy_id
WHERE  (wp_43_term_taxonomy.term_id = 4613 OR wp_43_term_taxonomy.term_id = 4615) AND wp_43_term_taxonomy.term_id != 8363 ) posts
但是,如果我不需要硬编码8363,而是需要从另一个查询派生它呢?例如,我需要从

SELECT
wp_43_term_taxonomy.term_taxonomy_id
FROM
wp_43_term_taxonomy
WHERE
wp_43_term_taxonomy.term_id = 8363

只需将其放入子查询并使用额外的联接:

INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT ID, someval, 0 FROM
( SELECT DISTINCT
wp_43_posts.ID,t.term_taxonomy_id someval
FROM
wp_43_posts
INNER JOIN wp_43_term_relationships ON wp_43_term_relationships.object_id = wp_43_posts.ID
INNER JOIN wp_43_term_taxonomy ON wp_43_term_taxonomy.term_taxonomy_id = wp_43_term_relationships.term_taxonomy_id
WHERE  (wp_43_term_taxonomy.term_id = 4613 OR wp_43_term_taxonomy.term_id = 4615) AND wp_43_term_taxonomy.term_id != 8363 
join wp_43_term_taxonomy t on t.term_id = 8363 ) posts

只需将其放入子查询并使用额外的联接:

INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT ID, someval, 0 FROM
( SELECT DISTINCT
wp_43_posts.ID,t.term_taxonomy_id someval
FROM
wp_43_posts
INNER JOIN wp_43_term_relationships ON wp_43_term_relationships.object_id = wp_43_posts.ID
INNER JOIN wp_43_term_taxonomy ON wp_43_term_taxonomy.term_taxonomy_id = wp_43_term_relationships.term_taxonomy_id
WHERE  (wp_43_term_taxonomy.term_id = 4613 OR wp_43_term_taxonomy.term_id = 4615) AND wp_43_term_taxonomy.term_id != 8363 
join wp_43_term_taxonomy t on t.term_id = 8363 ) posts

只需将其放入子查询并使用额外的联接:

INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT ID, someval, 0 FROM
( SELECT DISTINCT
wp_43_posts.ID,t.term_taxonomy_id someval
FROM
wp_43_posts
INNER JOIN wp_43_term_relationships ON wp_43_term_relationships.object_id = wp_43_posts.ID
INNER JOIN wp_43_term_taxonomy ON wp_43_term_taxonomy.term_taxonomy_id = wp_43_term_relationships.term_taxonomy_id
WHERE  (wp_43_term_taxonomy.term_id = 4613 OR wp_43_term_taxonomy.term_id = 4615) AND wp_43_term_taxonomy.term_id != 8363 
join wp_43_term_taxonomy t on t.term_id = 8363 ) posts

只需将其放入子查询并使用额外的联接:

INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT ID, someval, 0 FROM
( SELECT DISTINCT
wp_43_posts.ID,t.term_taxonomy_id someval
FROM
wp_43_posts
INNER JOIN wp_43_term_relationships ON wp_43_term_relationships.object_id = wp_43_posts.ID
INNER JOIN wp_43_term_taxonomy ON wp_43_term_taxonomy.term_taxonomy_id = wp_43_term_relationships.term_taxonomy_id
WHERE  (wp_43_term_taxonomy.term_id = 4613 OR wp_43_term_taxonomy.term_id = 4615) AND wp_43_term_taxonomy.term_id != 8363 
join wp_43_term_taxonomy t on t.term_id = 8363 ) posts

是的,您可以,请参见下面的修改后的查询。基本上,将该列包含到要为
INSERT
语句生成的子查询select子句中。此外,您当然不需要该条件
和wp_43_term_taxonomy.term_id!=8363

INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT ID, term_id, 0 
FROM
(SELECT DISTINCT
wp_43_posts.ID, 
wp_43_term_taxonomy.term_id
FROM wp_43_posts
INNER JOIN wp_43_term_relationships 
ON wp_43_term_relationships.object_id = wp_43_posts.ID
INNER JOIN wp_43_term_taxonomy 
ON wp_43_term_taxonomy.term_taxonomy_id = wp_43_term_relationships.term_taxonomy_id
WHERE wp_43_term_taxonomy.term_id IN(4613, 4615) posts

是的,您可以,请参见下面的修改后的查询。基本上,将该列包含到要为
INSERT
语句生成的子查询select子句中。此外,您当然不需要该条件
和wp_43_term_taxonomy.term_id!=8363

INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT ID, term_id, 0 
FROM
(SELECT DISTINCT
wp_43_posts.ID, 
wp_43_term_taxonomy.term_id
FROM wp_43_posts
INNER JOIN wp_43_term_relationships 
ON wp_43_term_relationships.object_id = wp_43_posts.ID
INNER JOIN wp_43_term_taxonomy 
ON wp_43_term_taxonomy.term_taxonomy_id = wp_43_term_relationships.term_taxonomy_id
WHERE wp_43_term_taxonomy.term_id IN(4613, 4615) posts

是的,您可以,请参见下面的修改后的查询。基本上,将该列包含到要为
INSERT
语句生成的子查询select子句中。此外,您当然不需要该条件
和wp_43_term_taxonomy.term_id!=8363

INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT ID, term_id, 0 
FROM
(SELECT DISTINCT
wp_43_posts.ID, 
wp_43_term_taxonomy.term_id
FROM wp_43_posts
INNER JOIN wp_43_term_relationships 
ON wp_43_term_relationships.object_id = wp_43_posts.ID
INNER JOIN wp_43_term_taxonomy 
ON wp_43_term_taxonomy.term_taxonomy_id = wp_43_term_relationships.term_taxonomy_id
WHERE wp_43_term_taxonomy.term_id IN(4613, 4615) posts

是的,您可以,请参见下面的修改后的查询。基本上,将该列包含到要为
INSERT
语句生成的子查询select子句中。此外,您当然不需要该条件
和wp_43_term_taxonomy.term_id!=8363

INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT ID, term_id, 0 
FROM
(SELECT DISTINCT
wp_43_posts.ID, 
wp_43_term_taxonomy.term_id
FROM wp_43_posts
INNER JOIN wp_43_term_relationships 
ON wp_43_term_relationships.object_id = wp_43_posts.ID
INNER JOIN wp_43_term_taxonomy 
ON wp_43_term_taxonomy.term_taxonomy_id = wp_43_term_relationships.term_taxonomy_id
WHERE wp_43_term_taxonomy.term_id IN(4613, 4615) posts

如果用()中的第二个查询替换常量,它应该可以工作。 像这样:

INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id,term_order)
SELECT ID,
(SELECT wp_43_term_taxonomy.term_taxonomy_id FROM wp_43_term_taxonomy WHERE wp_43_term_taxonomy.term_id = 8363),
0 FROM
... remaining of the original ...

至少如果您只需要1个值,否则最好将这个额外的表连接到其他表。

如果您用()中的第二个查询替换常量,它应该可以工作。 像这样:

INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id,term_order)
SELECT ID,
(SELECT wp_43_term_taxonomy.term_taxonomy_id FROM wp_43_term_taxonomy WHERE wp_43_term_taxonomy.term_id = 8363),
0 FROM
... remaining of the original ...

至少如果您只需要1个值,否则最好将这个额外的表连接到其他表。

如果您用()中的第二个查询替换常量,它应该可以工作。 像这样:

INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id,term_order)
SELECT ID,
(SELECT wp_43_term_taxonomy.term_taxonomy_id FROM wp_43_term_taxonomy WHERE wp_43_term_taxonomy.term_id = 8363),
0 FROM
... remaining of the original ...

至少如果您只需要1个值,否则最好将这个额外的表连接到其他表。

如果您用()中的第二个查询替换常量,它应该可以工作。 像这样:

INSERT INTO wp_43_term_relationships (object_id, term_taxonomy_id,term_order)
SELECT ID,
(SELECT wp_43_term_taxonomy.term_taxonomy_id FROM wp_43_term_taxonomy WHERE wp_43_term_taxonomy.term_id = 8363),
0 FROM
... remaining of the original ...

至少如果您只需要1个值,否则最好将这个额外的表连接到其他表。

这里似乎有几个硬编码的值;也许是时候考虑生成一个包含一个简单脚本的插入查询的.sql文件(无论是您首选的语言PHP、Python等),都允许在将值绑定到查询之前将其检索为变量,准备标识符数组以在循环中使用…@FrostyZ创建一个wp-cli命令需要2分钟,你是对的,但是我必须使用mysql,因为有时候它更容易。我很好奇。我可以简单地运行另一个查询并对值进行硬编码,但我想知道如何做到这一点!看起来这里有几个硬编码的值;也许是时候考虑生成一个包含一个简单脚本的插入查询的.sql文件(无论是您首选的语言PHP、Python等),都允许在将值绑定到查询之前将其检索为变量,准备标识符数组以在循环中使用…@FrostyZ创建一个wp-cli命令需要2分钟,你是对的,但是我必须使用mysql,因为有时候它更容易。我很好奇。我可以简单地运行另一个查询并对值进行硬编码,但我想知道如何做到这一点!看起来这里有几个硬编码的值;也许是时候考虑生成一个包含一个简单脚本的插入查询的.sql文件(无论是您首选的语言PHP、Python等),都允许在将值绑定到查询之前将其检索为变量,准备标识符数组以在循环中使用…@FrostyZ创建一个wp-cli命令需要2分钟,你是对的,但是我必须使用mysql,因为有时候它更容易。我很好奇。我可以简单地运行另一个查询并对值进行硬编码,但我想知道如何做到这一点!看起来这里有几个硬编码的值;也许是时候考虑生成一个包含一个简单脚本的插入查询的.sql文件(无论是您首选的语言PHP、Python等),都允许在将值绑定到查询之前将其检索为变量,准备标识符数组以在循环中使用…@FrostyZ创建一个wp-cli命令需要2分钟,你是对的,但是我必须使用mysql,因为有时候它更容易。我很好奇。我可以简单地运行另一个查询并对值进行硬编码,但我想知道如何做到这一点!